简体   繁体   English

Log4j的多个Appender用于相同的包

[英]Multiple Appender of Log4j for the same Package

I am working in the Multiple thread environment where i have multiple thread for the one class which exist in the one package. 我在多线程环境中工作,我有一个类的多个线程存在于一个包中。 I am using log4j for logging purpose. 我正在使用log4j进行日志记录。 Right now I can make a log in the one text file. 现在我可以在一个文本文件中登录。 But I want to make multiple log against my each thread. 但是我想针对每个线程进行多次日志记录。 Like for First Thread my log file will be different , for second thread my log file will be different and so on. 与First Thread类似,我的日志文件会有所不同,对于第二个线程,我的日志文件会有所不同,依此类推。 The method i have search out for logging is , we can use only one appender for one package in log4j. 我搜索日志的方法是,我们只能在log4j中为一个包使用一个appender。 Can we use multiple appender for one package. 我们可以为一个包使用多个appender。 Or any other technique which i can use to solve my problem. 或者我可以用来解决我的问题的任何其他技术。 Here is my log4j properties file 这是我的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  

Try As : 试试:

For log4j.xml 对于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>   

For log4j.properties 对于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 

Every thread will have its own name in the log. 每个线程在日志中都有自己的名称。 You have not to do that. 你不必这样做。

To simplify the answer, you can add additional appender to logger 为了简化答案,您可以向记录器添加额外的appender

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

or just add appender name 或者只是添加appender名称

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM