2011-03-24 92 views
0

我正在嘗試在不同的文件中寫入日誌。我希望能夠從不同的方法寫入不同的文件。如果方法A中存在異常,則寫入文件A ...如果方法B中存在異常,則寫入文件B.我在google上閱讀幫助,但它們都提示調試,跟蹤等等等級。我的消息都是錯誤消息,只是方法不同而已。我正在使用log4j的屬性文件。這是什麼樣子:使用log4j創建不同的日誌文件

log4j.rootLogger=ERROR, ROOT 
log4j.appender.ROOT=org.apache.log4j.RollingFileAppender 
log4j.appender.ROOT.File=(**my_path**)\EmailIntegration.log 
log4j.appender.ROOT.MaxFileSize=1000KB 
log4j.appender.ROOT.MaxBackupIndex=5 
log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout 
log4j.appender.ROOT.layout.ConversionPattern=[%d] %t %c %-5p - %m%n 
log4j.logger.com.webage.ejbs=INFO 

回答

3
  1. 定義你的log4j.rootLogger
  2. 將您的rootLogger配置爲appender。
  3. 定義該類登錄到哪個根記錄器。

實施例(我的根記錄是stdoutinfooutdebugouterrorout)。

#---This is the configuration file for Log4J--- 
log4j.threshold=ALL 
log4j.rootLogger=ALL, stdout, infoout, debugout, errorout 

然後,定義了每個記錄器(例如infoout

#--Log settings for infoout 
log4j.appender.infoout=org.apache.log4j.RollingFileAppender 
log4j.appender.infoout.file=C:/Logs/Music4Point0.info.log 
log4j.appender.infoout.MaxFileSize=10240KB 
log4j.appender.infoout.MaxBackupIndex=10 
log4j.appender.infoout.layout=org.apache.log4j.PatternLayout 
log4j.appender.infoout.layout.ConversionPattern=%d{dd-MMM-yyy HH:mm:ss,SSS} [%t] %-5p %c - %m%n 
log4j.appender.infoout.Threshold=INFO 

現在,我說的是所有org.hibernate.*類必須登錄到DEBUG閾值和infoout記錄器。

log4j.logger.org.hibernate=DEBUG, infoout 
log4j.additivity.org.hibernate=false 

這就是如何配置log4J來設置自定義日誌記錄。

1

log4j中最好的控制級別是在課堂級別。無論如何,你有兩個選擇:

第一個選項,最簡單的一個,就是定義特殊的記錄器爲每個方法:

log4j.logger.LoggerForMethodA=ERRROR, APPENDERFORMETHODA 
log4j.logger.LoggerForMethodB=ERRROR, APPENDERFORMETHODB 

而在你的類中,使用此時,相應的記錄在你的方法。

第二個選項,功能強大的是切換到xml配置格式,您可以在其中爲每個appender定義過濾器,我認爲這是您的最佳選擇。請參閱XML配置格式the explanation,以及how to use filters in log4j。這樣你可以爲每個文件定義一個appender,並使用過濾器來保證異常進入正確的文件。 另請參閱javadocs的Filter,Logging EventLocationInfo