zoukankan      html  css  js  c++  java
  • 【转】log4j 不同的模块 不同的级别 记录日志

    1、log4j的继承是通过命名来实现的。

    比如logger.a.b就会继承logger.a的一些设置。

    2、子logger会默认继承父logger的appender。

    如果配置中这样写:logger.a=INFO,app_a,logger.a.b=DEBUG,app_b,那么实际上,logger.a.b的配置是这样的:logger.a.b=DEBUG,app_b,app_a。

    3、子logger只在自己未定义输出级别的情况下,才会继承父logger的输出级别。

    比如配置中这样写:logger.a=DEBUG,app_a,logger.a.b=,app_b,那么实际上,logger.a.b的配置是:logger.a.b=DEBUG,app_b,app_a。

    但是如果配置中这样写:logger.a=DEBUG,app_a,logger.a.b=INFO,app_b,那么实际上,logger.a.b的输出级别就是INFO,而不会继承logger.a的DEBUG。这样,如果用logger.a.b记录DEBUG信息,它是不会向app_a输出的。

    <logger name="com.travelsky.pss.core.dao.tapi additivity="false" ><!-- additivity="false" 取消继承-->

    最近被问到一个log4j分不同文件记录不同级别日志的问题,一下给难倒了,以前没有留意过log4j的具体功能,只是了解了下。如今自己还差的远啊。参考了前段时间的那个项目中的log4j配置文件,发现那个只不过将不同模组的日志记录到不同的日志文件。并未按日志级别分文件记录。自己在动手调试的过程中结合查阅网上很多博文,终于以xml格式配置的方式调通。具体配置如下:



    Xml代码
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern"
    value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>
    </layout>
    </appender>

    <appender name="traceLog4Debug" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="C:/traceLog4Debug.log"/>
    <param name="maxFileSize" value="2000KB"/>
    <param name="maxBackupIndex" value="20"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern"
    value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>
    </layout>
    </appender>

    <appender name="debugLog" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="C:/debug.log"/>
    <param name="maxFileSize" value="2000KB"/>
    <param name="maxBackupIndex" value="10"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern"
    value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>
    </layout>
    <span style="color: #ff0000;"><!-- filter作用? 配置LevelMax与LevelMin限定输出到文件的日志级别 -->
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMax" value="DEBUG" />
    <param name="LevelMin" value="DEBUG" />
    </filter></span>
    </appender>

    <appender name="infoLog" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="C:/info.log"/>
    <param name="maxFileSize" value="2000KB"/>
    <param name="maxBackupIndex" value="10"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern"
    value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMax" value="INFO" />
    <param name="LevelMin" value="INFO" />
    </filter>
    </appender>

    <appender name="warnLog" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="C:/warn.log"/>
    <param name="maxFileSize" value="2000KB"/>
    <param name="maxBackupIndex" value="10"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern"
    value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMax" value="WARN" />
    <param name="LevelMin" value="WARN" />
    </filter>
    </appender>

    <appender name="errorLog" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="C:/error.log"/>
    <param name="maxFileSize" value="2000KB"/>
    <param name="maxBackupIndex" value="10"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern"
    value="%d{yyyy/MM/dd HH:mm:ss.sss} [%-5p] %c - %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMax" value="ERROR" />
    <param name="LevelMin" value="ERROR" />
    </filter>
    </appender>

    <!-- 记录该包下所有日志 -->
      <logger name="com.ecjavaeye.paopaohou">
    <level value="ALL"/>
    <appender-ref ref="stdout"/>
    <appender-ref ref="traceLog4Debug"/>
    <appender-ref ref="debugLog"/>
    <appender-ref ref="infoLog"/>
    <appender-ref ref="warnLog"/>
    <appender-ref ref="errorLog"/>

    </logger>

      <logger name="org.hibernate.SQL">  
    <level value="DEBUG"/>
    <appender-ref ref="traceLog4Debug"/>
    <appender-ref ref="stdout"/>
    </logger>

    <logger name="org.hibernate">
    <level value="error"/>
    <appender-ref ref="traceLog4Debug"/>
    <appender-ref ref="stdout"/>
    </logger>

    <logger name="org.springframework">
    <level value="error"/>
    <appender-ref ref="traceLog4Debug"/>
    <appender-ref ref="stdout"/>
    </logger>
    </log4j:configuration>  
     只不过是在配置appender的时候配置了一个LevelRangeFilter的filter,并配置LevelMax与LevelMin(最大最小级别)

    2.。。。

    Log4j比较全面的配置
    LOG4J的配置之简单使它遍及于越来越多的应用中了:Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。

    log4j.rootLogger=DEBUG,CONSOLE,A1,im
    log4j.addivity.org.apache=true
    # 应用于控制台
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.Threshold=DEBUG
    log4j.appender.CONSOLE.Target=System.out
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[thread] n%c[CATEGORY]%n%m[MESSAGE]%n%n
    #应用于文件
    log4j.appender.FILE=org.apache.log4j.FileAppender
    log4j.appender.FILE.File=file.log
    log4j.appender.FILE.Append=false
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    # Use this layout for LogFactor 5 analysis
    # 应用于文件回滚
    log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.ROLLING_FILE.Threshold=ERROR
    log4j.appender.ROLLING_FILE.File=rolling.log //文件位置,也可以用变量${java.home}、rolling.log
    log4j.appender.ROLLING_FILE.Append=true //true:添加 false:覆盖
    log4j.appender.ROLLING_FILE.MaxFileSize=10KB //文件最大尺寸
    log4j.appender.ROLLING_FILE.MaxBackupIndex=1 //备份数
    log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

    #应用于socket
    log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
    log4j.appender.SOCKET.RemoteHost=localhost
    log4j.appender.SOCKET.Port=5001
    log4j.appender.SOCKET.LocationInfo=true
    # Set up for Log Facter 5
    log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
    log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[thread]%n%c[CATEGORY]%n%m[MESSAGE]%n%n

    # Log Factor 5 Appender
    log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
    log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
    # 发送日志给邮件
    log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
    log4j.appender.MAIL.Threshold=FATAL
    log4j.appender.MAIL.BufferSize=10
    log4j.appender.MAIL.From=web@www.wuset.com
    log4j.appender.MAIL.SMTPHost=www.wusetu.com
    log4j.appender.MAIL.Subject=Log4J Message
    log4j.appender.MAIL.To=web@www.wusetu.com
    log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
    log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    # 用于数据库
    log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
    log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
    log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
    log4j.appender.DATABASE.user=root
    log4j.appender.DATABASE.password=
    log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES (’[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n’)
    log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
    log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

    log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.A1.File=SampleMessages.log4j
    log4j.appender.A1.DatePattern=yyyyMMdd-HH’.log4j’
    log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
    #自定义Appender
    log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
    log4j.appender.im.host = mail.cybercorlin.net
    log4j.appender.im.username = username
    log4j.appender.im.password = password
    log4j.appender.im.recipient = corlin@cybercorlin.net
    log4j.appender.im.layout=org.apache.log4j.PatternLayout
    log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

    http://www.iteye.com/topic/744693

  • 相关阅读:
    深入解析MySQL分区(Partition)功能
    使用mysqlreplicate命令快速搭建 Mysql 主从复制
    MySQL优化/面试,看这一篇就够了
    Nginx+Keepalived高可用集群
    高并发核心技术
    Redis详解
    memcached 常用命令及使用说明
    MemCached详解
    音频和视频
    frameset 和iframe框架标签
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400051.html
Copyright © 2011-2022 走看看