【Java】Mavenプロジェクトでログ出力機能として「log4j 2」を使用する方法

Java

はじめに

今回は、Javaのログ出力用ライブラリの一つである「log4j 2」について勉強したことを記載していきたいと思います。

 

前提条件

JavaのMavenプロジェクトで適用するために、以下記事を参照にMavenプロジェクトを作成します。

【VSCodeの環境構築】
【開発環境構築】VS CodeでJavaを使用するための環境構築を実施する – SEもりのLog (selifemorizo.com)

【Mavenプロジェクト作成】
【VSCode】Mavenプロジェクトのjarファイル作成方法について – SEもりのLog (selifemorizo.com)

 

log4j 2の設定

pom.xmlに設定

「dependencies」に以下設定を追加します。

    <dependency>
	    <groupId>org.apache.logging.log4j</groupId>
	    <artifactId>log4j-core</artifactId>
	    <version>2.23.0</version>
    </dependency>
    <dependency>
	    <groupId>org.apache.logging.log4j</groupId>
    	<artifactId>log4j-api</artifactId>
    	<version>2.23.0</version>
    </dependency>

 

プロジェクトに適用されていることを確認する

左下のプロジェクトにlog4jのライブラリが追加されていることを確認します。
ない場合は再ビルドしてみてください。

 

log4j2.xmlを作成する

「src/main/resources」フォルダ配下に「log4j2.xml」ファイルを作成します。

 

log4j2.xmlの内容を記述する

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project>
<Configuration>
	<Properties>
		<!-- %d:日時 -->
		<!-- %t:動作中の処理名称  -->
		<!-- %-6p:ログレベル名称 -->
		<!-- %c{x}:実行パッケージ・クラス名称 -->
		<!-- %m:ログメッセージ -->
		<!-- %n:改行 -->
		<Property name="format">%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-6p %c{10} %m%n</Property>
		<Property name="logfile">./log/log.log</Property>
		<Property name="logfile-archive">./log/log_%d{yyyy-MM-dd}-%i.log</Property>
	</Properties>

	<Appenders>
		<!-- コンソール出力設定 -->
		<Console name="Console" target="SYSTEM_OUT">
			<PatternLayout>
				<pattern>${format}</pattern>
			</PatternLayout>
		</Console>

		<!-- ファイル出力設定 -->
		<RollingFile name="setlogfile" append="true" fileName="${logfile}"
			filePattern="${logfile-archive}">
			<PatternLayout>
				<pattern>${format}</pattern>
			</PatternLayout>
			<Policies>
				<SizeBasedTriggeringPolicy size="10 MB"/>
			</Policies>
			<DefaultRolloverStrategy max="10"/>
		</RollingFile>
	</Appenders>

	<Loggers>
		<!-- trace以上のログはコンソールに出力する -->
		<Root level="trace">
			<AppenderRef ref="Console" />
			<AppenderRef ref="setlogfile" />
		</Root>
	</Loggers>
</Configuration>

 

ログ出力コードを書いてみる

package com.example;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class App {
    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
		Logger logger = LogManager.getLogger();

        logger.trace("traceメッセージ");
        logger.debug("debugメッセージ");
        logger.info("infoメッセージ");
        logger.warn("warnメッセージ");
        logger.error("errorメッセージ");
    }
}

 

実行確認

コンソール

コンソール上で出力されることを確認

2024/05/11 19:56:49.850 [main] TRACE  com.example.App traceメッセージ
2024/05/11 19:56:49.850 [main] DEBUG  com.example.App debugメッセージ
2024/05/11 19:56:49.850 [main] INFO   com.example.App infoメッセージ
2024/05/11 19:56:49.850 [main] WARN   com.example.App warnメッセージ
2024/05/11 19:56:49.850 [main] ERROR  com.example.App errorメッセージ

 

ファイルが出力されることを確認

logファイルが出力されていることを確認

 

ドキュメント

【公式サイト】
Log4j – Maven, Ivy, Gradle, and SBT Artifacts (apache.org)

 

最後に

以上、ログになります。
これからも継続していきましょう!!

Javaサーバーサイド関連
おすすめIT本
良いコード/悪いコードで学ぶ設計入門

「ITエンジニア本大賞2023」技術書部門で大賞を受賞した本です。
・コードの可読性
・普段意識したほうが良いこと
・リファクタリング考え方
等、普段のコードを設計する際に意識することが書かれています。
コードのあるべき姿に迷ったら一度読んでみると良い本です。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Dockerって何?となったときに私が最初に読んだ本です。
Dockerがどんな仕組みで動いているのか、コマンドでは何を命令しているのかを理解できるように、イラストを多用して説明しています。

1冊ですべて身につくJavaScript入門講座

「ITエンジニア本大賞2024」技術書部門で大賞を受賞した本です。
私が次に読もうと思っている本なのでおすすめとして挙げておきたいと思います。

コメント

タイトルとURLをコピーしました