2011-06-29 81 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