• log4j记录日志到指定文件


    1. 新建类文件:
     1 import org.apache.log4j.Logger;
     2 import org.apache.log4j.PropertyConfigurator;
     3 
     4 /**
     5  * 记录日志到指定文件
     6  *
     7  * @author He
     8  * @date 2018/5/16
     9  */
    10 public class Log4jDemo {
    11 
    12     static Logger logger = Logger.getLogger(Log4jDemo.class);
    13 
    14     public static void main(String[] args) {
    15         PropertyConfigurator.configure("config/log4j.properties");
    16         logger.info("我记录在Log4jDemo 文件中....");
    17         logger.error("在Log4jDemo 文件中出现异常....");
    18     }
    19 }

      2. 在项目根目录下(即与src平级)创建config文件夹,新建log4j.properties 文件

    配置如下:

    # 声明日志类型
    log4j.rootLogger = INFO,log4jDemo,test
    
    # 配置1 - 即日志Id名为 com.exampl.log.Log4jDemo 的日志配置(通俗来讲就是日志的标识,只不过该标识可在多个类中调用)
    log4j.logger.log4jDemo=com.exampl.log.Log4jDemo
    log4j.additivity.log4jDemo = false
    log4j.appender.log4jDemo=org.apache.log4j.RollingFileAppender
    # 输出级别(如果定义的ERROR级别,那么打印的INFO级别的日志就不会记录在文件中,因为INFO的级别比ERROR要)
    log4j.appender.log4jDemo.Threshold=ERROR
    # 输出的日志文件位置及文件名称
    log4j.appender.log4jDemo.File=logs/Log4jDemo.log
    # 布局类型
    log4j.appender.log4jDemo.layout=org.apache.log4j.PatternLayout
    # 布局模板
    log4j.appender.log4jDemo.layout.ConversionPattern=%d %-5p [%l] - %m%n
    # 输出的日志文件的最大文件大小,单位b(字节)
    log4j.appender.log4jDemo.MaxFileSize=5242880
    # 日志的循环周期
    log4j.appender.log4jDemo.MaxBackupIndex=3

    运行main方法 日志输出如下:

       3.关于log4j.properties 一些配置:

    • 日志输出级别,共有5级: 
    FATAL      0  
    ERROR      3  
    WARN       4  
    INFO       6  
    DEBUG      7 
    • Appender 为日志输出目的地,Log4j提供的appender有以下几种:
    org.apache.log4j.ConsoleAppender(控制台),
    org.apache.log4j.FileAppender(文件),
    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
    org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
    • Layout:日志输出格式,Log4j提供的layout有以下几种:
    org.apache.log4j.HTMLLayout(以HTML表格形式布局),
    org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
    org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
    org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
    • 打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:
      %m   输出代码中指定的消息
      %p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
      %r   输出自应用启动到输出该log信息耗费的毫秒数 
      %c   输出所属的类目,通常就是所在类的全名 
      %t   输出产生该日志事件的线程名 
      %n   输出一个回车换行符,Windows平台为“
    ”,Unix平台为“
    ” 
      %d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日  22 : 10 : 28 , 921  
      %l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 ) 
    • 在代码中初始化Logger: 

    1)在程序中调用BasicConfigurator.configure()方法:给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为"%-4r [%t] %-5p %c %x - %m%n",还有根记录器的默认级别是Level.DEBUG. 
    2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(args[x])解析并配置;
    3)配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;
    4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。

    •  日志文件生成周期的定义:
    rollover次数输出的目标压缩的日志文件描述
    1 foo.log foo-1.log 在第一次rollover时,foo.log会被重命名为foo-1.log。同时会创建一个新的foo.log并开始写入。
    2 foo.log foo-1.log, foo-2.log 在第二次发生rollover时,foo-1.log会重命名为foo-2.log并且foo.log会重命名为foo-1.log。同时会创建一个新的foo.log并开始写入。
    3 foo.log foo-1.log, foo-2.log, foo-3.log 在第三次发生rollover时,foo-2.log会重命名为foo-3.log。foo-1.log重命名为foo-2.log,foo.log会重命名为foo-1.log。同时会创建一个新的foo.log并开始写入。
    4 foo.log foo-1.log, foo-2.log, foo-3.log 在第四次和随后的rollover时,foo-3.log会被删除,foo-2.log重命名为foo-3.log。foo-1.log重命名为foo-2.log。foo.log重命名为foo-1.log。后面同理

        每次当文件达到指定文件大小(MaxFileSize)时,日志文件就会按上述规则来生成。

  • 相关阅读:
    Eclipse使用之将Git项目转为Maven项目, ( 注意: 最后没有pom.xml文件的, 要转化下 )
    静态类型语言,动态类型语言的区别
    UT, FT ,E2E 测试的意思
    git tag 用法 功能作用
    java 常用异常及作用
    git checkout -b 分支name 分支的新建, 切换, 删除, 查看
    项目上有红色感叹号, 一般就是依赖包有问题, remove依赖,重新加载,maven的也行可认删除,自己也会得新加载
    密码学初级教程(五)消息认证码MAC-Message Authentication Code
    密码学初级教程(六)数字签名 Digital Signature
    密码学初级教程(四)单向散列函数-指纹-
  • 原文地址:https://www.cnblogs.com/hejianjun/p/9047154.html
Copyright © 2020-2023  润新知