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オブジェクトを取得し、異なるメソッドを使用してログを書き込むだけです。