【问题标题】:Multiple Appender of Log4j for the same Package同一个包的多个 Log4j Appender
【发布时间】:2014-02-15 03:11:58
【问题描述】:

我在多线程环境中工作,我在一个包中存在一个类的多个线程。我正在使用 log4j 进行日志记录。现在我可以在一个文本文件中记录。但我想针对我的每个线程创建多个日志。就像第一个线程我的日志文件会有所不同,对于第二个线程我的日志文件会有所不同,依此类推。我搜索日志的方法是,我们只能对 log4j 中的一个包使用一个附加程序。我们可以为一个包使用多个附加程序吗?或者我可以用来解决我的问题的任何其他技术。这是我的 log4j 属性文件

log4j.logger.com.ef.zoomanalyzer=DEBUG, Analyzer_Log

log4j.appender.Analyzer_Log=org.apache.log4j.RollingFileAppender
log4j.appender.Analyzer_Log.File=C:/AnalyzerLog/Analyzer.log
log4j.appender.Analyzer_Log.MaxFileSize=1000KB
log4j.appender.Analyzer_Log.MaxBackupIndex=10
log4j.appender.Analyzer_Log.layout=org.apache.log4j.PatternLayout  

【问题讨论】:

标签: java multithreading logging log4j


【解决方案1】:

为了简化答案,您可以向 logger 添加额外的 appender

<logger name="org.java.test">
    <level value="DEBUG"/>
    <appender-ref ref="APPENDER_1"/>
    <appender-ref ref="APPENDER_2"/>
</logger>

或者只是添加附加程序名称

log4j.logger.com.your.package.name=APPENDER_1, APPENDER_2 

【讨论】:

    【解决方案2】:

    试一试:

    对于 log4j.xml

    <appender name="APPENDER_1" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="C:/log_1.log"/>
        <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>
    </appender>
    <appender name="APPENDER_2" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="C:/log_2.log"/>
        <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>
    </appender>
    <logger name="org.java.test">
        <level value="DEBUG"/>
        <appender-ref ref="APPENDER_1"/>
    </logger>
    <logger name="org.java.tes">
        <level value="DEBUG"/>
        <appender-ref ref="APPENDER_2"/>
    </logger>   
    

    对于 log4j.properties

    log4j.appender.APPENDER_1=org.apache.log4j.FileAppender
    log4j.appender.APPENDER_1.File=C:/log_1.log
    log4j.appender.APPENDER_1.layout=org.apache.log4j.PatternLayout
    log4j.appender.APPENDER_1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
    
    log4j.appender.APPENDER_2=org.apache.log4j.FileAppender
    log4j.appender.APPENDER_2.File=C:/log_2.log
    log4j.appender.APPENDER_2.layout=org.apache.log4j.PatternLayout
    log4j.appender.APPENDER_2.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
    
    log4j.logger.com.java.logger.org.java.test=,APPENDER_1, APPENDER_2 
    

    【讨论】:

    • 这是 log4j.xml 格式。你可以用不同的方式配置log4j,他选择了xml而不是属性格式。
    • @MalikEhtasham,我没有测试它,只是尝试更新配置。
    【解决方案3】:

    每个线程在日志中都有自己的名称。 你不必那样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多