2011-06-29 15 views
2

実行中のアプリケーションのJVMメモリ統計を定期的にポーリングする必要があります。私はこれを行うサービスを実行しており、ルートロガーに統計情報を書き込みます(私は、ルートロガーの使用状況をあまり制御していません)。Log4Jは1つのクラスのみをアペンダに接続します

私がしたいことは、これらのロギングメッセージだけを1つのアペンダーにルーティングすることです。このアペンダーは、この1つのクラスからのログメッセージのみを処理し、他のクラスからのメッセージは処理しないでください。他のアペンダーは、この1つのクラスからメッセージを受け取るべきではありません。

これまでのログメッセージは、この 'memoryStats'アペンダーにのみ送られています。しかし、他のすべてのログメッセージもそのアペンダーに送られています。私はそれらを取り除く必要がありますが、悪夢になる可能性のあるすべてのクラスをリストするのがどれほど短いかわかりません。

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

関連する問題