Log4jにログをファイルとコンソールに書き込むように指示する方法はありますか?おかげで私のプロパティがあります:
log4j.rootLogger=DEBUG,console,R
log4j.rootLogger=INFO, FILE
log4j.appender.CONSOLE=org.Apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.Apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n
log4j.appender.FILE=org.Apache.log4j.RollingFileAppender
log4j.appender.FILE.File=log4j.log
log4j.appender.FILE.MaxFileSize=512KB
log4j.appender.FILE.MaxBackupIndex=3
log4j.appender.FILE.layout=org.Apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n
ルートロガーの定義は少し混乱しています。 log4j documentation を参照してください。
これは標準のJavaプロパティファイルです。つまり、行はkey = valueのペアとして扱われます。2番目のlog4j.rootLogger
行は最初の行を上書きしています。これは、console
アペンダーに何も表示されない理由を説明しています。
2つのrootLogger
定義を1つにマージする必要があります。 DEBUG
メッセージをコンソールに、INFO
メッセージをファイルに送信しようとしているようです。ルートロガーはoneレベルしか持てないため、アペンダーが適切なレベルになるように設定を変更する必要があります。
これが正しいことを確認していませんが、次のようになります。
log4j.rootLogger=DEBUG,console,file
log4j.appender.console=org.Apache.log4j.ConsoleAppender
log4j.appender.file=org.Apache.log4j.RollingFileAppender
また、大文字と小文字の違いがあることに注意してください。ある場所にはコンソールがあり、別の場所にはCAPSがあります。
# Define the types of logger and level of logging
log4j.rootLogger = DEBUG,console, FILE
# Define the File appender
log4j.appender.FILE=org.Apache.log4j.FileAppender
# Define Console Appender
log4j.appender.console=org.Apache.log4j.ConsoleAppender
# Define the layout for console appender. If you do not
# define it, you will get an error
log4j.appender.console.layout=org.Apache.log4j.PatternLayout
# Set the name of the file
log4j.appender.FILE.File=log.out
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug
# Set the append to false, overwrite
log4j.appender.FILE.Append=false
# Define the layout for file appender
log4j.appender.FILE.layout=org.Apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
これはデバッグモードのコンソールでうまく機能します
log4j.appender.console=org.Apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.Apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n
コンソールとFILEの両方でログインするために、以下のようにルートロガーを作成します。
log4j.rootLogger = ERROR、console、FILE
そして、Target、Layout、ConversionPattern(ファイルなどのMaxFileSize)のようなそれぞれの定義を書きます。