私は次のことを達成したい:
All log-messages with TRACE or higher should be logged to log-trace.log
All log-messages with DEBUG or higher should be logged to log-debug.log
In general messages with DEBUG or higher should be logged to stdout, but:
for Class de.foo only INFO or higher should be logged to stdout,
for Class de.bar also TRACE and higher should be logged to stdout.
ファイルへの分割を機能させることができました:
## Root logger
log4j.rootLogger=trace,STDOUT,FILE_DEBUG,FILE_TRACE
## Appenders
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Threshold=DEBUG
# File appenders
log4j.appender.FILE_DEBUG=org.apache.log4j.RollingFileAppender
log4j.appender.FILE_DEBUG.File=logs/log-debug.log
log4j.appender.FILE_DEBUG.Threshold=DEBUG
log4j.appender.FILE_TRACE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE_TRACE.File=logs/log-trace.log
log4j.appender.FILE_TRACE.Threshold=TRACE
# [..] Layouts
しかし、stdout のデバッグ レベルを変更しようとすると、ファイルに含まれるものも変更されます。
log4j.logger.de.foo=info
foo からの TRACE メッセージが trace-logfile から消えます。私が探しているのは、おそらく次のようなものです。
log4j.appender.FILE_DEBUG.de.foo.Threshold=DEBUG
しかし、それはうまくいきません。助けてくれてありがとう:)