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

  • 相关阅读:
    封装成帧、帧定界、帧同步、透明传输(字符计数法、字符串的首尾填充法、零比特填充的首尾标志法、违规编码法)
    计算机网络之数据链路层的基本概念和功能概述
    物理层设备(中继器、集线器)
    计算机网络之传输介质(双绞线、同轴电缆、光纤、无线电缆、微波、激光、红外线)
    计算机网络之编码与调制
    0953. Verifying an Alien Dictionary (E)
    1704. Determine if String Halves Are Alike (E)
    1551. Minimum Operations to Make Array Equal (M)
    0775. Global and Local Inversions (M)
    0622. Design Circular Queue (M)
  • 原文地址:https://www.cnblogs.com/chaos-x/p/9258534.html
Copyright © 2011-2022 走看看