Log4J只将一个类附加到appender

我需要定期轮询正在运行的应用程序的JVM内存统计信息。 我正在运行一个执行此操作的服务并将统计信息写入根Logger(我对Root Logger的使用情况没有太多控制权)。

我想要做的是将这些日志消息路由到单个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 

您应该从log4j.rootCategory删除MEM。

更改:

 log4j.rootCategory=info, A1, R, MEM 

至:

 log4j.rootCategory=info, A1, R