java学习笔记之日志处理-log4j配置

                                 java学习笔记之日志处理-log4j配置

        从接触日志开始就使用的是log4j,所以一直对他情有独钟。最近在学习Spring boot,发现还是用他顺手,所以就整理一下。当然啦整理的还是以前使用log4j的应用,Spring boot使用log4j配置基本不变。

1、导包:
    log4j-x.x.x.jar
    
2、需要配置文件:
    log4j.properties
    
3、调用方法:
    ①Logger.getLogger(Class clasz);
        调用的是logger根目录定义的所有日志对象,即在打印日志的时候,根目录上所有对应的日志对象都将生效。
    ②Logger.getLogger(String logName);
        调用的是properties中定义的子类日志对象,对象名为logName。当logName没有激活父类对象的时候,logger根目录定义的所有日志对象都不生效,反之一同生效。如果properties没有名为logName的子类对象,则在功能上相当于Logger.getLogger(Class clasz),但是不像是clasz而变更为logName。
    
4、log4j.properties配置说明

    ①日志等级:ERROR、WARN、INFO、DEBUG
    ERROR 为严重错误  
    WARN  为警告  
    INFO  为正常显示的信息 
    DEBUG 为程序的调试信息
    
    ②配置根节点
        log4j.rootLogger=【日志等级】,【日志名1】,【日志名2】............
        
        log4j.rootLogger=INFO,logName1,logName2
            INFO表示日志打印的最低级别
            logName1,logName2表示日志对象名
            
    ③配置日志输出位置、类型或者模式。
        org.apache.log4j.ConsoleAppender                 【输出到控制台】
        org.apache.log4j.FileAppender                      【输出到文件】
        org.apache.log4j.DailyRollingFileAppender         【输出到文件,每天产生一个文件】
        org.apache.log4j.RollingFileAppender             【输出到文件,当日志文件达到指定大小时产生新的文件】
        org.apache.log4j.WriterAppender                    【将日志信息以流格式发送到任意指定的地方】    
    
        log4j.appender.logName1=org.apache.log4j.ConsoleAppender
    
    ④配置日志格式,我只用过PatternLayout,其他的是在网上找的。
        org.apache.log4j.HTMLLayout                        【HTML表格形式】  
        org.apache.log4j.PatternLayout                    【自定义】  
        org.apache.log4j.SimpleLayout                    【包含日志信息的级别和信息字符串】  
        org.apache.log4j.TTCCLayout                        【包含日志产生的时间、线程、类别等等信息】
        
        log4j.appender.logName1.layout=org.apache.log4j.PatternLayout
    
    ⑤自定义输出格式后配置

        log4j.appender.logName1.layout.ConversionPattern=%p %d{yyyy-MM-dd HH:mm:ss,SSS}[%t]%-50.50c(%L) - %m%n
        
        实际:INFO 2018-12-27 17:09:37,924[pool-5-thread-296]cn.com.xxx.yyy.zzz.service.FullIndexService    (?) - ttt
    
        %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL  
        %d 输出date,可以默认也可以在指定格式。例:%d{yyy MMM dd HH:mm:ss,SSS}。实际日志:INFO 2018-12-27 16:57:55,310          
        %t 输出线程名
        %c 输出类名(全)
        %L 输出日志事件的发生的类及行数。举例:Main.java:69
        %m 输出程序中指定的内容
        &n 输出换行符
        %r 输出自应用启动到输出该log信息耗费的毫秒数  


    ③配置子类日志对象
        log4j.logger.logName3=INFO,logName3
            定义子类日志对象名为logName3
        log4j.additivity.logName3=FALSE
            是否激活父类日志对象


5、例子

    #根类
    log4j.rootLogger=INFO,CONSOLE,lqq
    log4j.logger.com.meetup.memcached.MemCachedClient=ERROR
    log4j.logger.com.meetup.memcached=ERROR 
    
    #CONSOLE控制台输出
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c - %m%n
    
    #lqq文件输出
    log4j.appender.lqq=org.apache.log4j.RollingFileAppender
    log4j.appender.lqq.layout=org.apache.log4j.PatternLayout
    log4j.appender.lqq.layout.ConversionPattern=%p %d{yyyy-MM-dd HH:mm:ss,SSS}[%t]%-50.50c(%L) - %m%n
    log4j.appender.lqq.Encoding=UTF-8
    log4j.appender.lqq.MaxFileSize=1000MB
    log4j.appender.lqq.MaxBackupIndex=10
    log4j.appender.lqq.File=/home/xxx/logs/ur.log
    
    #子类
    log4j.logger.lgl=INFO,lgl
    log4j.additivity.lgl=False
    log4j.appender.lgl=org.apache.log4j.RollingFileAppender
    #自定义日志输出格式
    log4j.appender.lgl.layout=org.apache.log4j.PatternLayout
    log4j.appender.lgl.layout.ConversionPattern=%p %d{yyyy-MM-dd HH:mm:ss,SSS}[%t]%-50.50c(%L) - %m%n

    log4j.appender.lgl.ImmediateFlush =TRUE
    log4j.appender.lgl.Append =TRUE
    #编码格式
    log4j.appender.lgl.Encoding=UTF-8
    #单个文件最大容量
    log4j.appender.lgl.MaxFileSize=1MB
    #最大个数
    log4j.appender.lgl.MaxBackupIndex=10
    #文件位置
    log4j.appender.lgl.File=/home/xxx/logs/tmp/lgl.log

你可能感兴趣的:(肥肥果)