Log处理(一)_Log4j和Logback

一:简介

1.其实已经有很多的log4j的文章,但是为了自己以后用起来方便,还是自己写一个吧

2.Log4j是一个很流行的Java日志记录工具,提供了很多日志打印的特性,常用的配置包括:logger、appender和layout,即日志对象、输出位置、输出样式;

3.Log4j的日志级别分为7个等级:ALL、DEBUG、INFO、WARN、ERROR、FATAL、OFF,从左到右等级由低到高,分等级是为了设置日志输出的门槛,只有等级等于或高于这个门槛的日志才有机会输出;

二:配置简介(使用log4j.properties配置)

1、logger

  日志实例,就是代码里实例化的Logger对象,格式如下,LEVEL用来设定日志等级,appenderName定义日志输出器:

1

2

log4j.rootLogger=LEVEL,appenderName1,appenderName2,...

log4j.additivity.org.apache=false:表示不会在父logger的appender里输出,默认true

  下面的例子中给出了4种不同的Logger打印日志的appender:

1

2

log4j.rootLogger=DEBUG,console,dailyFile,rollingFile,logFile

log4j.additivity.com.demo.test=false

2、appender

 a)日志输出器,指定logger的输出位置

1

log4j.appender.appenderName=className

  appender有5种选择

1

2

3

4

5

org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

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

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

 b)每种appender都有若干配置项,下面逐一介绍

  Threshold=WARN:指定日志信息的最低输出级别,默认DEBUG

   ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true

   Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认true

   File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件

   log4j.appender.xxx.layout=org.apache.log4j.PatternLayout

   log4j.appender.xxx.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n

3、layout

   a)几种常见的模式

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

      org.apache.log4j.PatternLayout(可以灵活地指定布局模式)

      org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)

      org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

b)参数的含义

  %m 输出代码中指定的消息;%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;

  %r 输出自应用启动到输出该log信息耗费的毫秒数 ;%c 输出所属的类目,通常就是所在类的全名;

   %t 输出产生该日志事件的线程名;%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”;

   %d 输出日志时间点的日期或时间;%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) 作者:杜琪 链接:https://www.jianshu.com/p/c6c543e4975e 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

二:配置简介(使用xml配置)

    这种配置方式可用于logback和log4j,也是通过配置logger、appender、pattern来进行配置的,比如下面的例子中,定义了3个logger:console、普通按天分块日志、供logstash使用的日志,还定义了pattern

 



##继承logback的默认配置
    
    ​
##日志路径和名称
    ​

##日志打印格式
    

##控制台的日志打印
    
        
            
            DEBUG
        
        
            ${CONSOLE_LOG_PATTERN}
            utf8
        
    

##普通的日志文件,并且以天为单位切割日志文件
    
        ${LOG_FILE}
        
            ${LOG_FILE}.%d{yyyy-MM-dd}.gz
            7
        
        
            ${CONSOLE_LOG_PATTERN}
            utf8
        
    

##供logstash使用的日志文件,并且以天为单位切割日志文件
    
    
        ${LOG_FILE}.json
        
            ${LOG_FILE}.json.%d{yyyy-MM-dd}.gz
            7
        
        
            
                
                    UTC
                
                
                    
                        {
                        "severity": "%level",
                        "service": "${springAppName:-}",
                        "trace": "%X{X-B3-TraceId:-}",
                        "span": "%X{X-B3-SpanId:-}",
                        "parent": "%X{X-B3-ParentSpanId:-}",
                        "exportable": "%X{X-Span-Export:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger{40}",
                        "rest": "%message"
                        }
                    
                
            
        
    
        
        
        
    

 

 

 

 

 

你可能感兴趣的:(日志处理)