Log4j2とSLF4Jを使用してログ記録を設定する方法について説明します。
必要な依存関係、サンプル構成、およびログステートメントの使用例を見ていきます。
必要な依存関係、サンプル構成、およびログステートメントの使用例を見ていきます。
Log4j2とSLF4Jのバインディング依存関係
Log4j2とSLF4Jを組み合わせるには、以下の3つの依存関係を含める必要があります。
- log4j-slf4j-impl.jar - Log4j 2のSLF4Jバインディング。これにより、SLF4J APIを使用したアプリケーションがLog4j2を実装として利用できます。
- log4j-api.jar - ログ実装を作成するために必要なアダプターコンポーネントインターフェースを提供します。
- log4j-core.jar - Log4jのコア実装クラスです。
Maven依存関係
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.22.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.22.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.22.0</version>
</dependency>
Gradle依存関係
dependencies {
implementation 'org.apache.logging.log4j:log4j-api:2.20.0'
implementation 'org.apache.logging.log4j:log4j-core:2.20.0'
implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.20.0'
}
ログファイルの設定
ログ記録器とアペンダーを設定するために、log4j2.properties、log4j2.xml、またはlog4j2.jsonファイルを使用できます。
設定ファイルはリソースフォルダやアプリケーションクラスパスに配置します。すべてのログステートメントはこれらの記録器を使用して記録されます。
ここではXML設定を使用し、コンソールログ記録をデモします。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n</Property>
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="console"/>
</Root>
</Loggers>
</Configuration>
例
アプリケーションコードでLoggerとLoggerFactoryを使用してログステートメントを記述します。
これらのクラスはorg.slf4jパッケージに属しています。
// MyApp.java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyApp {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(MyApp.class);
logger.info("こんにちは、世界!!");
}
}
main()メソッドを実行し、コンソール出力を確認します:
2021-12-13 22:08:14 INFO MyApp - こんにちは、世界!!