2014-01-24 2 views
3

Я работаю в среде с несколькими потоками, где у меня есть несколько потоков для одного класса, которые существуют в одном пакете. Я использую log4j для целей ведения журнала. Прямо сейчас я могу сделать журнал в одном текстовом файле. Но я хочу сделать несколько журналов против каждого потока. Как и для First Thread, мой файл журнала будет другим, для второго потока мой файл журнала будет другим и так далее. Метод, который я просматриваю для ведения журнала, мы можем использовать только одно приложение для одного пакета в log4j. Можем ли мы использовать несколько приложений для одного пакета. Или любой другой метод, который я могу использовать для решения моей проблемы. Вот мои log4j файл свойствНесколько 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 
+2

http://stackoverflow.com/questions/1172113/how-do-i-setup-log4j-properties-so-that-each-thread-outputs-to-its-own-log-file – Durandal

ответ

1

Попробуйте Как:

Для 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 
+0

Где я есть , чтобы закодировать это: В файле свойств log4J? –

+0

это в формате log4j.xml. вы можете настроить log4j по-разному, и он выбрал xml над форматом свойств. –

+0

@MalikEhtasham, я не тестировал его, а просто попробовал как обновить конфигурацию. – CycDemo

0

Каждый поток будет иметь свое собственное имя журнал. Вы не должны этого делать.

+0

Но я хочу сделать это в другом файле –

+0

lol, специальное требование – lidl

Смежные вопросы