🥲
Java spring bootログ出力 Apache Log4j2
Apache Log4j2について
ネットに良いの無くって3時間も詰まったためメモとして残します。
まず、Apache Log4j2とはJavaアプリケーション向けのロギングライブラリ。
ロギング(logging)、コンピューターの動作記録やアクセス履歴などを定期的に記録することです
柔軟なログ出力(コンソール、ファイル、データベースなど)
異なるログレベル(INFO、DEBUG、ERRORなど)のサポート
設定の柔軟性(XML、JSON、YAML、プロパティファイル)
高パフォーマンスな非同期ロギング
前のバージョンは脆弱性があったため最新バージョンを使ってください
Gradleによる依存関係の追加
build.gradle
dependencies {
implementation 'org.apache.logging.log4j:log4j-core:2.20.0'
implementation 'org.apache.logging.log4j:log4j-api:2.20.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-jcl', version: '2.20.0'
}
デフォルトロギングの無効化
Spring Bootのデフォルトのロギングを無効化する
build.gradle
configurations {
all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}
設定ファイルの作成
src/main/resources/log4j2.xml
一般的にここに作成します。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %p %c{1} - %m%n"/>
</Console>
<File name="File" fileName="logs/app.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %p %c{1} - %m%n"/>
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
log4jの設定ファイルを使う宣言
application.properties
logging.config=classpath:log4j2.xml
Javaコード内での使用例
java
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class MyApp {
private static final Logger logger = LogManager.getLogger(MyApp.class);
public static void main(String[] args) {
logger.info("アプリケーションが開始しました。");
try {
logger.debug("デバッグ情報");
} catch (Exception e) {
logger.error("エラーが発生しました", e);
}
}
}
実行
アプリケーションを実行してログがコンソールおよび指定したファイルに出力されることを確認してください。
まとめ
現在調べた限りではjavaでログ出力する際にLog4j2かSLF4J+logbackどっちかが良いって言われてるみたいなのでSLF4J+logbackの方も調べてみてください。
ちなみにMavenでの依存関係
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
<!-- 最新のバージョンに更新してください -->
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.20.0</version>
</dependency>
Discussion