log4j.xml配置详解

log4j.xml配置详解

    • 1.配置详解
      • 1.1 Appender
      • 1.2 日志级别
        • 级别种类详解
      • 1.3 Layout
      • 1.4 打印参数
      • 1.5 代码样例
      • 1.6 实际例子

相关文章链接:

SSM框架搭建Web项目

log4j自定义输出级别和输出信息

Jar包下载链接

观前提示:

本文所使用Eclipse版本为Photon Release (4.8.0),JDK为1.8.0_141,Tomcat为9.0.12。

1.配置详解

1.1 Appender

Appender为日志输出目的地,Log4j提供的appender有以下几种:

  1. ConsoleAppender: org.apache.log4j.ConsoleAppender,日志输出到控制台。
  2. FileAppender:org.apache.log4j.FileAppender,输出到文件。
  3. RollingFileAppender:org.apache.log4j.RollingFileAppender,输出到文件,文件达到一定阈值时,自动备份日志文件。
  4. DailyRollingFileAppender:org.apache.log4j.DailyRollingFileAppender,可定期备份日志文件,默认一天一个文件,也可设置为每分钟一个、每小时一个。
  5. WriterAppender:org.apache.log4j.WriterAppender,可自定义日志输出位置。

1.2 日志级别

一般日志级别包括:ALL,DEBUG, INFO, WARN, ERROR,FATAL,OFF
Log4J推荐使用:DEBUG, INFO, WARN, ERROR

级别种类详解

  1. OFF:为最高等级 关闭了日志信息
  2. FATAL:为可能导致应用中止的严重事件错误
  3. ERROR:为严重错误 主要是程序的错误
  4. WARN:为一般警告,比如session丢失
  5. INFO:为一般要显示的信息,比如登录登出
  6. DEBUG:为程序的调试信息
  7. TRACE:为比DEBUG更细粒度的事件信息
  8. ALL:为最低等级,将打开所有级别的日志

1.3 Layout

Layout为日志输出格式,Log4j提供的layout有以下几种:

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

1.4 打印参数

  1. %m:输出代码中指定的消息,如log(message)中的message。
  2. %M:输出方法名。
  3. %p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 。
  4. %r:输出自应用启动到输出该log信息耗费的毫秒数 。
  5. %c:输出所属的类目,通常就是所在类的全名 。
  6. %C:输出Logger所在类的名称,通常就是所在类的全名。
  7. %t:输出产生该日志事件的线程名 。
  8. %n:输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” 。
  9. %d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921 。
  10. %l:输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 ) 。
  11. %F:输出所在类的类名称,只有类名。
  12. %L:输出语句所在的行数,只输出数字。
  13. %%:用来输出百分号“%”。

1.5 代码样例




<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j">
  
  <appender name="console" class="org.apache.log4j.ConsoleAppender">
    
    <layout class="org.apache.log4j.TTCCLayout"/>
  appender>
  
  
  <appender name="fileAppender" class="org.apache.log4j.FileAppender">
    
    <param name="File" value="${catalina.base}/logs/demo/fileAppender.log"/>
    
    <param name="Append" value="false"/>
    
    <param name="Threshole" value="INFO"/>
    
    <param name="BufferSize" value="false"/>
    
    <param name="BufferSize" value="512"/>
    
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
    layout>
  appender>
  
  
  <appender name="rollingAppender" class="org.apache.log4j.RollingFileAppender">
    
    <param name="File" value="${catalina.base}/logs/demo/RollingFileAppender.log"/>
    
    <param name="Append" value="true"/>
    
    <param name="MaxBackupIndex" value="10"/>
    
    <param name="MaxFileSize" value="5120KB"/>
    
    <layout class="org.apache.log4j.PatternLayout">
      
      <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n"/>
    layout>
  appender>
  
  
  <appender name="dailyRollingAppender" class="org.apache.log4j.DailyRollingFileAppender">
    
    <param name="File" value="${catalina.base}/logs/demo/DailyRollingFileAppender.log"/>
    <param name="Append" value="true"/>
    
    <param name="DatePattern" value="yyyy-MM-dd"/>
    
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n"/>
    layout>
  appender>
  
   
    <logger name="logTest" additivity="false">
        
        <appender-ref ref="dailyRollingAppender"/>
    logger>

  
  <root>
    <appender-ref ref="console"/>
    <appender-ref ref="fileAppender"/>
    <appender-ref ref="rollingAppender"/>
    <appender-ref ref="dailyRollingAppender"/>
  root>
log4j:configuration>

1.6 实际例子




<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j">
  
  <appender name="console" class="org.apache.log4j.ConsoleAppender">
    
    <layout class="org.apache.log4j.TTCCLayout"/>
  appender>
  
  
  <appender name="rollingAppender" class="org.apache.log4j.RollingFileAppender">
    
    <param name="File" value="${catalina.base}/logs/mydemo/RollingFileAppender.log"/>
    
    <param name="Append" value="true"/>
    
    <param name="MaxBackupIndex" value="10"/>
    
    <param name="MaxFileSize" value="5120KB"/>
    
    <layout class="org.apache.log4j.PatternLayout">
      
      <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n"/>
    layout>
  appender>
  
  
  <appender name="dailyRollingAppender" class="org.apache.log4j.DailyRollingFileAppender">
    
    <param name="File" value="${catalina.base}/logs/mydemo/DailyRollingFileAppender.log"/>
    <param name="Append" value="true"/>
    <param name="Threshold" value="DEBUG" />
    
    <param name="DatePattern" value="yyyy-MM-dd"/>
    
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n"/>
    layout>
  appender>
  
  
  
  <logger name="org.apache.commons" additivity="false">
    <level value="ERROR"/>
    <appender-ref ref="dailyRollingAppender"/>
  logger>
  
  <logger name="org.mybatis.spring" additivity="false">
    <level value="ERROR"/>
    <appender-ref ref="dailyRollingAppender"/>
  logger>
  <logger name="java.sql" additivity="false">
    <level value="ERROR"/>
    <appender-ref ref="dailyRollingAppender"/>
  logger>
  
  <logger name="org.apache.ibatis" additivity="false">
    <level value="ERROR"/>
    <appender-ref ref="dailyRollingAppender" /> 
  logger>
  
  <logger name="org.springframework" additivity="false">
    <level value="ERROR"/>
    <appender-ref ref="dailyRollingAppender"/>
  logger>
  <logger name="com.mchange.v2" additivity="false">
    <level value="ERROR"/>
    <appender-ref ref="dailyRollingAppender"/>
  logger>
  
  <logger name="com.alibaba.druid.filter.stat" additivity="false">
    <level value="WARN"/>
    <appender-ref ref="dailyRollingAppender"/>
  logger>
  <logger name="com.alibaba.druid.pool" additivity="false">
    <level value="WARN"/>
    <appender-ref ref="dailyRollingAppender"/>
  logger>
  <logger name="druid.sql.Connection" additivity="false">
    <level value="WARN"/>
    <appender-ref ref="dailyRollingAppender"/>
  logger>
  <logger name="druid.sql.DataSource" additivity="false">
    <level value="WARN"/>
    <appender-ref ref="dailyRollingAppender"/>
  logger>
  <logger name="druid.sql.ResultSet" additivity="false">
    <level value="WARN"/>
    <appender-ref ref="dailyRollingAppender"/>
  logger>
  <logger name="druid.sql.Statement" additivity="false">
    <level value="WARN"/>
    <appender-ref ref="dailyRollingAppender"/>
  logger>
  
  
  <root>
    <appender-ref ref="console"/>
    <appender-ref ref="rollingAppender"/>
    <appender-ref ref="dailyRollingAppender"/>
  root>
log4j:configuration>

你可能感兴趣的:(Java,Web)