Java 同一软件包的多个Log4j追加器

Java 同一软件包的多个Log4j追加器,java,multithreading,logging,log4j,Java,Multithreading,Logging,Log4j,我在多线程环境中工作,在这个环境中,一个包中的一个类有多个线程。我使用log4j进行日志记录。现在我可以在一个文本文件中创建日志。但是我想针对我的每个线程创建多个日志。像第一个线程一样,我的日志文件将不同,第二个线程的日志文件将不同,依此类推。我搜索日志的方法是,在log4j中,一个包只能使用一个appender。我们可以为一个包使用多个appender吗。或者其他我可以用来解决问题的方法。这是我的log4j属性文件 log4j.logger.com.ef.zoomanalyzer=DEBUG,

我在多线程环境中工作,在这个环境中,一个包中的一个类有多个线程。我使用log4j进行日志记录。现在我可以在一个文本文件中创建日志。但是我想针对我的每个线程创建多个日志。像第一个线程一样,我的日志文件将不同,第二个线程的日志文件将不同,依此类推。我搜索日志的方法是,在log4j中,一个包只能使用一个appender。我们可以为一个包使用多个appender吗。或者其他我可以用来解决问题的方法。这是我的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  
试试看:

对于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>   

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

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

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

这是log4j.xml格式。您可以用不同的方式配置log4j,他选择xml而不是属性格式。@MalikEhtasham,我没有测试它,只是尝试作为更新配置。
<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