log4j2でクラスごとにファイル出力する方法は何ですか?
log4j2では、クラス名に基づいてログを異なるファイルに出力できます。まず、log4j2の設定ファイルで1つ以上のロガーを定義し、名前と出力先のファイルを指定する必要があります。
log4j2.xmlという設定ファイルの例を以下に示す:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<File name="FileAppender1" fileName="logs/app1.log">
<PatternLayout pattern="%d [%t] %-5level %logger{36} - %msg%n" />
</File>
<File name="FileAppender2" fileName="logs/app2.log">
<PatternLayout pattern="%d [%t] %-5level %logger{36} - %msg%n" />
</File>
</Appenders>
<Loggers>
<Logger name="com.example.app1" level="debug" additivity="false">
<AppenderRef ref="FileAppender1" />
</Logger>
<Logger name="com.example.app2" level="debug" additivity="false">
<AppenderRef ref="FileAppender2" />
</Logger>
<Root level="error">
<AppenderRef ref="FileAppender1" />
</Root>
</Loggers>
</Configuration>
設定ファイルには、2つのFileAppenderが定義されており、それぞれ異なるファイル(app1.logとapp2.log)に出力されます。その後、2つのLoggerが定義され、それぞれ異なるクラス(com.example.app1とcom.example.app2)に対応しており、使用するFileAppenderがそれぞれ指定されています。
これにより、これらの2つのクラスのログが出力されると、クラス名に応じて対応するファイルにログが出力されます。同時に、すべての他の指定されていないFileAppenderのログが、FileAppender1に対応するファイルに出力されるRoot Loggerも定義されています。
log4j2.xml の設定ファイルをクラスパスに配置する必要があります。そうすることで log4j2 がそれを見つけて読み込むことができます。