私がやりたいことはとても簡単ですが、log4jでうまく動作しないようです。log4jはクラスとレベルに応じて異なるファイルに出力されます
2つのログファイルが必要です。最初のクラスにはレベルデバッグ以上のデバッグ文がすべて含まれている必要がありますが、my.appのクラスからのみです。*
2番目のログファイルには、ソースクラスにかかわらずレベルwarn以上のすべてのメッセージが含まれている必要があります。
私は、次の設定を試してみましたが、それは動作しません:
log4j.rootLogger=warn,root
log4j.appender.root=org.apache.log4j.FileAppender
log4j.appender.root.layout = org.apache.log4j.PatternLayout
log4j.appender.root.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.root.file = /tmp/logs/warn.file
log4j.appender.root.append = true
log4j.appender.root.MaxFileSize=10MB
log4j.appender.root.MaxBackupIndex=7
log4j.logger.my.app=debug,debugAppender
log4j.appender.debugAppender = org.apache.log4j.RollingFileAppender
log4j.appender.debugAppender.file = /tmp/logs/my.debug.file
log4j.appender.debugAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.debugAppender.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.debugAppender.append = true
log4j.appender.debugAppender.MaxFileSize=10MB
log4j.appender.debugAppender.MaxBackupIndex=7
log4j.additivity.my.app=false
私は問題は最後の行であると思います。 additivityをtrueに設定すると、debugおよびinfoレベルのメッセージも私のwarn.fileに追加されます。しかし、falseに設定した場合、my.appからの警告はdebug.fileにのみ記録されます。
ありがとうございます。log4j.appender.root.Threshold = WARNが完璧に機能しました。これはanywareに文書化されていますか?私が持っている唯一のドキュメンテーションはhttp://logging.apache.org/log4j/1.2/manual.htmlであり、そのページにはスレッショルドについても言及していません。 – MTilsted
@MTilsted - はい、答えに含まれるFAQリンクに文書化されています。 – ziesemer