2011-06-29 78 views
2

我需要定期輪詢正在運行的應用程序的JVM內存統計信息。我正在運行一個服務來執行此操作,並將統計信息寫入根Logger(我根本無法控制Root Logger的使用)。Log4J僅將一個類附加到appender

我想要做的就是將這些日誌消息路由到單個appender。這個appender只能處理來自這個類的日誌消息,而不能處理來自任何其他類的日誌消息。其他appender不應該收到這一類的消息。

到目前爲止,我只有日誌消息纔會去這個'memoryStats'appender。然而,所有其他的日誌消息也都是這個appender的,我需要擺脫它們,但我不確定每一個課程的上市時間有多短,這將是一場噩夢。

log4j.rootCategory=info, A1, R, MEM 

# A1 is set to be a ConsoleAppender. 
log4j.appender.A1=org.apache.log4j.ConsoleAppender 

# A1 uses PatternLayout. 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=[%p] %d{dd MMM yyyy HH;mm:ss,SSS} %t %c{2} (line:%L) - %m%n 

log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=logs/ui.log 

log4j.appender.R.MaxFileSize=100MB 
# Keep backup files 
log4j.appender.R.MaxBackupIndex=9 

log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=[%p] %d{dd MMM yyyy HH;mm:ss,SSS} %t %c{2} (line:%L) - %m%n 



log4j.category.foo.bar.services.App.MemoryStats=debug, MEM 
log4j.additivity.foo.bar.services.App.MemoryStats=false 
log4j.appender.MEM=org.apache.log4j.RollingFileAppender 
log4j.appender.MEM.File=logs/memStats.log 

log4j.appender.MEM.MaxFileSize=100MB 
# Keep backup files 
log4j.appender.MEM.MaxBackupIndex=9 

log4j.appender.MEM.layout=org.apache.log4j.PatternLayout 
log4j.appender.MEM.layout.ConversionPattern=[%p] %d{dd MMM yyyy HH;mm:ss,SSS} %t %c{2} (line:%L) - %m%n 

回答

4

您應該從log4j.rootCategory刪除MEM。

變化:

log4j.rootCategory=info, A1, R, MEM 

到:

log4j.rootCategory=info, A1, R 
+0

感謝,這是非常有幫助 – Rich