zoukankan      html  css  js  c++  java
  • log4j.properties配置说明

    log4j.properties配置说明

    1. log4j配置

    # ALL,DEBUG,INFO,WARN,ERROR,FATAL,OFF
    LOG_LEVEL=INFO
    log4j.rootLogger=${LOG_LEVEL},CONSOLE,FILE,ERR
    
    # 打印日志到控制台
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.Encoding=utf-8
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    #log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n
    log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{1}@(%F:%L):%m%n
    
    # 打印日志到文件
    log4j.logger.FILE=INFO,FILE
    log4j.appender.FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.FILE.File=${catalina.base}/logs/admin.log
    log4j.appender.FILE.Encoding=utf-8
    log4j.appender.R.MaxFileSize=100MB
    log4j.appender.R.MaxBackupIndex=100
    log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    #log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
    log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n
    

    2. LOG_LEVEL的级别说明

      LOG_LEVEL为日志的输出级别,共有7级:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL

    • off 最高等级,用于关闭所有日志记录。
    • fatal 指出每个严重的错误事件将会导致应用程序的退出。
    • error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
    • warm 表明会出现潜在的错误情形。
    • info 一般和在粗粒度级别上,强调应用程序的运行全程。
    • debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
    • all 最低等级,用于打开所有日志记录。

      Log4j只建议使用4个级别,优先级从高到低分别是error,warn,info和debug。如果在使用了info级别的日志,只会输出info级别下info、debug等的日志,warn、error等日志不会被打印。

    3. appender的日志输出方式

    • org.apache.log4j.ConsoleAppender :以控制台方式输出日志
    • org.apache.log4j.FileAppender :以文件形式输出日志
    • org.apache.log4j.DailyRollingFileAppender :以每天产生一个日志文件
    • org.apache.log4j.RollingFileAppende :转动输出,当文件达到指定大小产生一个新文件
    • org.apache.log4j.WriterAppender :以流的形式输出到其它地方

    如:输出到控制台
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

    4. layout日志输出格式说明

    • org.apache.log4j.HTMLLayout :以HTML表格形式布局
    • org.apache.log4j.PatternLayout :可以灵活地指定布局模式
    • org.apache.log4j.SimpleLayout :包含日志信息的级别和信息字符串
    • org.apache.log4j.TTCCLayout :包含日志产生的时间、线程、类别等等信息

    一般使用PatternLayout,自己配置输出格式。

    5. 输出格式参数说明

    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
    • %F 输出日志事件的发生位置,包括类目名、发生的线程。举例:Testlog4.main(TestLog4.java:10)
    • %l 输出日志事件的发生位置在代码中的行数。举例:Testlog4.main(TestLog4.java:10 )

    如:

    log4j.appender.logRecord.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n
    2018-06-25 16:26:40 com.xk.edu.interception.LogRecordInterception@(LogRecordInterception.java:22):pre handle --->>> --->>>---
    
    log4j.appender.logRecord.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} (%L):%m%n
    2018-06-25 16:30:39 (22):pre handle --->>> --->>>---
    
    log4j.appender.logRecord.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss},%m%n
    2018-06-25 16:35:16,pre handle --->>> --->>>---
    

    6. 配置打印异常日志到一个单独的文件

    把异常单独打印到一个单独的文件中,方便查看定位排查问题。
    配置如下:

    # 保存异常信息到单独文件
    log4j.appender.ERR = org.apache.log4j.DailyRollingFileAppender
    # 每天产生一个日志文件
    log4j.appender.ERR.DatePattern='.'yyyy-MM-dd
    # 异常日志文件名
    log4j.appender.ERR.File=${catalina.base}/logs/error/adminError.log
    log4j.appender.ERR.Append = true
    # 是否立即输出
    log4j.appender.ERR.ImmediateFlush=true
    log4j.appender.ERR.Encoding=utf-8
    # 只输出ERROR级别以上的日志!!!
    log4j.appender.ERR.Threshold = ERROR
    log4j.appender.ERR.layout = org.apache.log4j.PatternLayout
    log4j.appender.ERR.layout.ConversionPattern = [%-5p][%d{yyyyMMdd HH:mm:ss,SSS}][%C{1}:%L] %m%n
    

    上面配置中产生的error以上级别的日志会打印到logs/adminError.log中,明天会把今天产生的异常日志保存一个文件中,名称是adminError.log + 今天的日期,日期格式是根据log4j.appender.ERR.DatePattern定义的格式。

    7. 日志过滤配置

    如在6中把error级别以上的日志打印到异常文件中去了,如果不配置过滤,会在admin.log中打印info以上级别的日志,那样就重复打印了error以上级别的日志。

    新FILE文件配置如下

    # 打印日志到文件,排除error的日志
    log4j.logger.FILE=INFO,FILE
    log4j.appender.FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.FILE.File=${catalina.base}/logs/admin.log
    log4j.appender.FILE.Encoding=utf-8
    log4j.appender.R.MaxFileSize=100MB
    log4j.appender.R.MaxBackupIndex=100
    log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    #log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
    log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n
    # 不打印warn以上级别的日志
    log4j.appender.FILE.filter.infoFilter = org.apache.log4j.varia.LevelRangeFilter
    log4j.appender.FILE.filter.infoFilter.LevelMin=DEBUG
    log4j.appender.FILE.filter.infoFilter.LevelMax=WARN
    

    这样就只在admin.log中打印DEBUG级别到WARN级别的日志了。

    8. 自定义logger的输出

    如:
    log4j.logger.com.xk.edu.interception.LogRecordInterception=INFO,logRecord
    这样自定义了一个logger,不使用log4j.rootLogger。自定义的logger之间的日志是隔离的,如上配置的,只打印LogRecordInterception类下的日志。
    如:
    log4j.logger.com.xk.edu.dao=DEBUG
    com.edu.dao包下的内容按DEBUG级别输出,因为dao包下是mapper文件,加上这一个配置就可以打印sql语句了。

    9. 配置文件

    以下贴出配置文件:

    # ALL,DEBUG,INFO,WARN,ERROR,FATAL,OFF
    LOG_LEVEL=INFO
    log4j.rootLogger=${LOG_LEVEL},CONSOLE,FILE,ERR
    
    # 打印日志到控制台
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.Encoding=utf-8
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    #log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n
    log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{1}@(%F:%L):%m%n
    
    # 打印日志到文件,排除error的日志
    log4j.logger.FILE=INFO,FILE
    log4j.appender.FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.FILE.File=${catalina.base}/logs/admin.log
    log4j.appender.FILE.Encoding=utf-8
    log4j.appender.R.MaxFileSize=100MB
    log4j.appender.R.MaxBackupIndex=100
    log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    #log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
    log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n
    # 不打印warn以上级别的日志
    log4j.appender.FILE.filter.infoFilter = org.apache.log4j.varia.LevelRangeFilter
    log4j.appender.FILE.filter.infoFilter.LevelMin=DEBUG
    log4j.appender.FILE.filter.infoFilter.LevelMax=WARN
    
    # 保存异常信息到单独文件
    log4j.appender.ERR = org.apache.log4j.DailyRollingFileAppender
    # 每天产生一个日志文件
    log4j.appender.ERR.DatePattern='.'yyyy-MM-dd
    # 异常日志文件名
    log4j.appender.ERR.File=${catalina.base}/logs/error/adminError.log
    log4j.appender.ERR.Append = true
    # 是否立即输出
    log4j.appender.ERR.ImmediateFlush=true
    log4j.appender.ERR.Encoding=utf-8
    # 只输出ERROR级别以上的日志!!!
    log4j.appender.ERR.Threshold = ERROR
    log4j.appender.ERR.layout = org.apache.log4j.PatternLayout
    log4j.appender.ERR.layout.ConversionPattern = [%-5p][%d{yyyyMMdd HH:mm:ss,SSS}][%C{1}:%L] %m%n
    
    # 输出拦截器的日志, 只输出LogRecordInterception类下的日志
    log4j.logger.com.xk.edu.interception.LogRecordInterception=INFO,logRecord
    log4j.appender.logRecord=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.logRecord.Append=true
    # 是否立即输出
    log4j.appender.logRecord.ImmediateFlush=true
    # 一分钟产生一个日志文件
    #log4j.appender.logRecord.DatePattern='.'yyyy-MM-dd-HH-mm
    log4j.appender.logRecord.DatePattern='.'yyyy-MM-dd
    log4j.appender.logRecord.Encoding=utf-8
    log4j.appender.logRecord.layout=org.apache.log4j.PatternLayout
    log4j.appender.logRecord.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n
    
    # 打印 dao 下的 sql
    log4j.logger.com.xk.edu.dao=DEBUG
    

    参考:

    http://www.blogjava.net/zJun/archive/2006/06/28/55511.html
    https://blog.csdn.net/zxh317162782/article/details/51233704
    https://blog.csdn.net/lingfenglangshao/article/details/78334147

  • 相关阅读:
    任务五:基础JavaScript练习(二)
    任务四:基础JavaScript练习(一)
    JS判断一个对象为空对象
    任务三:零基础JavaScript编码(三)
    任务二:零基础JavaScript编码(二)
    任务一:零基础JavaScript编码(一)
    Jquery点击按钮 异步和同步提交表单
    2019 Google 开发者大会直播完整版
    Android 10 开发亮点有哪些?
    2019Android多线程面试总结
  • 原文地址:https://www.cnblogs.com/chaos-x/p/9258534.html
Copyright © 2011-2022 走看看