6

log4jの苛立たしいことの1つは、常に画面にデータをダンプしたいということです。ファイルにログを記録している場合は、それは必要ありません。log4j.propertiesファイルの設定方法にあると確信しています。この構成をすべて解決するのはイライラします。:-)

現在Balancerと呼んでいるプログラムの場合、これがロガーの初期化を行う方法です。おそらくそれは間違っているか何かです。

static Logger log = Logger.getLogger(Balancer.class);

log4j.propertiesの部分的なダンプ:

log4j.rootLogger=fatal, stdout
log4j.logger.Balancer=fatal, rollingLog

# I still don't understand how category stuff works yet
log4j.category.Balancer=info, BalancerLog

#### First appender writes to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d [%t] (%F:%L) - %m%n

#### Second appender writes to a file
# Control the maximum log file size
# Archive log files (ten backups here)
log4j.appender.rollingLog=org.apache.log4j.RollingFileAppender
log4j.appender.rollingLog.File=default.log
log4j.appender.rollingLog.MaxFileSize=10000KB
log4j.appender.rollingLog.MaxBackupIndex=10
log4j.appender.rollingLog.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingLog.layout.ConversionPattern=%5p %d [%t] (%F:%L) - %m%n

log4j.appender.BalancerLog=org.apache.log4j.RollingFileAppender
log4j.appender.BalancerLog.File=Balancer.log
log4j.appender.BalancerLog.MaxFileSize=100000KB
log4j.appender.BalancerLog.MaxBackupIndex=10
log4j.appender.BalancerLog.layout=org.apache.log4j.PatternLayout
log4j.appender.BalancerLog.layout.ConversionPattern=%5p %d [%t] (%F:%L) - %m%n

rootLoggerがstdoutアペンダーにデータを送信する方法を取得します。/ dev / nullアペンダーはありますか?少なくとも1つのアペンダーが必要です。

とにかく、他に何もないとしても、私の基本的な回避策は、画面出力を/ dev/nullに送信することです。ところで、私のJavaプログラムは、スケジュールされたバッチ環境(GUIなし)で実行されます。スプールファイルをクリーンアップする必要がある(はい、これはAS / 400上にあります)のは少し面倒ですが、自動化することもできます。

4

1 に答える 1

8

/ dev / nullアペンダーはありますか?

はい。

log4j.appender.devnull=org.apache.log4j.varia.NullAppender
log4j.rootLogger=fatal, devnull

あなたがどこlog4j.category.*から来たのかはわかりませんが、それは私が以前に見たものではありません。私はとを使用することに固執しappenderますlogger

log4j.logger.Balancer=fatal, rollingLog, BalancerLog

fatal(パッケージプレフィックスなしで)指定されたロガーのレベルメッセージをBalancerrollingLogアペンダーとBalancerLogアペンダーの両方に送信します。ロガーレベルをに変更した場合info

log4j.logger.Balancer=info, rollingLog, BalancerLog

次に、レベル以上のメッセージinfoを両方のアペンダーに送信します。BalancerLogが取得するように制限することはできませんが、rollingLogはロガーごとにメッセージinfoのみを取得しますが、rollingLogアペンダーにしきい値を設定して、メッセージのみを記録するようにすることができます(メッセージが送信されたロガーに関係なく)fatalfatal

log4j.appender.rollingLog=org.apache.log4j.RollingFileAppender
log4j.appender.rollingLog.Threshold=fatal
log4j.appender.rollingLog.File=default.log
# other parameters as before
于 2012-08-06T17:01:07.847 に答える