玩转log配置一:log4j.properties详情

        在开发中我们需要调试主要依赖debug模式,但是在寻找bug问题的时候更多是依赖于log,一个强大的log配置将会给我们带来更多便捷,所以说在一个系统中配置一个log文件是必要的,今天我们了解一下Log4j.properties的参数。后面我们将结合各种框架,以及各种需要配置属于自己的,具有特色的日志;

定义日志配置:就是对Logger,Appender及Layout的分别使用。Log4j支持两种配置文件格式:一种是XML格式文件,一种是java properties(key=value)格式文件:今天我们先来看properties格式:

根据不同的日志系统,我们先了解一下那些规则配置才会被正确加载

Logback: logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4j: log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2: log4j2-spring.xml, log4j2.xml
JDK (Java Util Logging): logging.properties

 先来看一个最简单的日志配置:
log4j.rootLogger = debug,stdout
### 输出信息到控制擡 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

由上面我们可以看到配置日志有三个重要组成:接下来我们将走进log4j:

一、Log4j使用:

日志三要素:

    1、日志信息的优先级

    2、日志信息的输出目的地

    3、日志信息输出格式

1>、配置根Logger (日志信息的优先级)

    log4j.rootLogger=[ level ] , appenderName1,appenderName2 , ...

    level:是日志记录的优先级,分为OFF, FATAL, ERROE, WARN, INFO, DEBUG, ALL以及自定义的日志;通过控制输出级别,可以控制应用程序中相应级别的日志信息开关。

    A: off 最高等级,用于关闭所有日志记录。

    B: fatal 指出每个严重的错误事件,将会导致应用程序的退出。

    C: error 指出虽然发生错误事件,但任然不影响系统的继续运行。

    D: warn 表明会出现潜在的错误情形。

    E: info 一般和在粗颗粒度级别上,强调应用程序的运行全程。

    F: debug 一般用于细颗粒级别上,对调试应用程序非常有帮助。

    G: all 最低等级,用于打开所有日志记录。

       这些级别是定义在org.apache.log4j.Level类中:log4j只建议使用4个级别,分别是:error warn info debug; 

    appenderName:日志输出地方,可以指定多个输出目标;

2>、日志信息输出目的地

    log4j.appender.appenderName=class

        class可以使用下面五个目的地中任意一个:

        A. org.apache.log4j.ConsoleAppender #控制台

        B. org.apache.log4j.FileAppender #文件

        C. org.apache.log4j.DailyRollingFileAppender #每天产生一个日志文件

        D. org.apache.log4j.RollingFileAppender #文件大小到达指定尺寸的时候产生一个新的文件

        E. org.apache.log4j.WriterAppender #将日志信息以流格式发送到指定的地方

接下来我们分别来理解一下这五个目的选项:

A. ConsoleAppender 

    Threshold =warn指定日志消息的输出最低层次。

    ImmediateFlush=true 默认值是true,所有消息会被立即输出。

    Target=System.err 默认是System.out 指定输出控制台

B. FileAppender

    Threshold=WARN:指定日志消息的输出最低层次。
    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
    File=mylog.txt:指定消息输出到mylog.txt文件。

    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。         

C. DailyRollingFileAppender 

    Threshold=WARN:指定日志消息的输出最低层次。

     ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。

     File=mylog.txt:指定消息输出到mylog.txt文件。

     Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

    DatePattern=''.''yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:

        1)''.''yyyy-MM: 每月

        2)''.''yyyy-ww: 每周 

        3)''.''yyyy-MM-dd: 每天

        4)''.''yyyy-MM-dd-a: 每天两次

        5)''.''yyyy-MM-dd-HH: 每小时

        6)''.''yyyy-MM-dd-HH-mm: 每分钟

D. RollingFileAppender 

    Threshold=WARN:指定日志消息的输出最低层次。

    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。

    File=mylog.txt:指定消息输出到mylog.txt文件。

    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

    MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。

    MaxBackupIndex=2:指定可以产生的滚动文件的最大数。

3>、日志信息的格式:

    1. log4j.appender.appenderName.layout = class

    class:

    org.apache.log4j.HTMLLayout #以HTML表格形式布局

    org.apache.log4j.PatternLayout #灵活指定布局模式

    org.apache.log4j.SimpleLayout #日志信息的级别和信息字符串

    org.apache.log4j.TTCCLayout #包含日志产生时间,线程,类别等信息

        1)、HTMLLayout

            LocationInfo=true;默认值是false,输出java文件名称和行号;

            Title =my app file;默认值是Log4J Log Messages;

        2)、PatternLayout

            ConversionPattern = %m%n 怎样格式化指定的消息

        3)、XMLLayout 

            LocationInfo=true 默认false,输出java文件和行号

说明:log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

-x号:x信息输出时左对齐;

%p: 输出日志信息优先级,即debug info warn error fatal

%d: 输出日志时间点的日期或者时间,默认格式为ISO8601,也可以指定格式:%d{yyy MMM dd HH:mm:ss,SSS} 输出为:2018年4月24日 12:49:40 ,921

%r: 输出自应用启动到输出该log信息耗费的毫秒数

%c: 输出日志信息所属的类目,所在类的全名

%t: 输出改日志事件的线程名

%l: 输出日志事件发生位置,等价%C.%M(%F:%L)包含类目名,线程,以及代码中行数,eg:Test.Log4j.main(TestLog4j.java:10)

%x: 输出和当前线程相关的NDC(嵌套诊断环境),

%%:输出一个%字符

%F: 输出日志消息产生时所在文件名称

%L: 输出代码中行号

%m: 输出代码中指定的消息,产生的日志的具体消息

%n: 输出一个回车换行符,

在%与模式字符间加修饰符来控制其最小宽度,最大宽度,和文本的对齐方式

    %20c:指定输出名称,最小宽度20,若小于20,默认右对齐

    %-20c:指定输出名称最小宽度30,若小于20,默认左对齐

    %.30c:指定最大宽度30,若大于,截取掉左边多出字符;小于不会有空格

    %20.30c:若小于20用空格补,且右对齐,若大于30,截取掉左边字符;

此章我们从三要素了解一下日志的一些属性,下章我们将来看一个日志配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章