log4jで複数のログを書くにはどうすればいいですか?

Log4jでは、複数のLoggerオブジェクトを構成することで、複数のログを書き込むことができます。

最初に、log4jの設定ファイル(通常はlog4j.propertiesまたはlog4j.xml)を開き、複数のLoggerの設定を追加します。例えば、コンソールに書き込むための1つのLoggerオブジェクトとファイルに書き込むためのもう1つのLoggerオブジェクトを追加することができます。

log4j.rootLoggerは、INFO、console、fileの3つを指定します。

ログをコンソールに出力

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} %5p %c{1}:%L – %m%n

ログ4jアペンダー.console=org.apache.log4j.ConsoleAppender
ログ4jアペンダー.console.Target=System.out
ログ4jアペンダー.console.layout=org.apache.log4j.PatternLayout
ログ4jアペンダー.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L – %m%n

日志のファイル出力

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/path/to/log/file.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L – %m%n

ログファイルの出力設定:
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/path/to/log/file.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L – %m%n

Javaコード内で、Logger.getLoggerメソッドを使用して異なるLoggerオブジェクトを取得し、異なるログレベルでログを書き込むことができます。たとえば、以下のコードを使用してコンソールログとファイルログをそれぞれ書き込むことができます:

import org.apache.log4j.Logger; -> org.apache.log4j.Loggerをインポートする;

Log4jExampleというクラスには、consoleLoggerとfileLoggerという名前で定義されたstaticなLoggerがあります。

public static void main(String[] args) {
    consoleLogger.info("This is a console log message");
    fileLogger.error("This is a file log message");
}

私は日本語で自然に以下を言い換えることができます。

上記の設定とコードを使用すると、コンソールとファイルの両方にログを記録できます。注意すべきは、設定ファイルでコンソールとファイルのAppenderをそれぞれ設定し、異なるLogger名を指定する必要があることです。Javaコードでは、Logger.getLoggerメソッドを使用して対応するLoggerオブジェクトを取得し、異なるメソッドを使用してログを書き込むだけです。

bannerAds