トッカンソフトウェア

Log4j2でログ出力(Web)

今回はLog4j2を使用してWebアプリでログを出力してみます。Log4j2の基本については前回を参照下さい。
log4j2.xmlは前回使用したものをそのまま使用します。

Webアプリの作成はこちらを参照下さい。

環境構築

前回に使用したJarに加えて、log4j-web-2.17.0.jar を使用します。
log4j-web-2.17.0.jar は前回ダウンロードした apache-log4j-2.17.0-bin.zip を解凍した中に入っています。

今回使用するJarは以下になります。

これらのJarファイルを WEB-INF\lib の中に入れます。
log4j2.xmlはWEB-INFに入れます。

ファイル構成は以下になります。


※log4j-web-2.17.0.jarがない場合、log4j2.xmlをWEB-INFに入れても読み込まれません。
またTomcatやJavaのバージョンなどが古い場合、log4j-web-2.17.0.jarがあっても読み込まれません。
log4j2.xmlが読み込まれない場合、前回と同じようにlog4j2.xmlをsrc直下に置いて下さい。


log4j2.xmlの作成

log4j2.xmlは前回に作成したものをそのまま使用します。

Javaファイル(Servlet)にログ出力処理の埋め込み

				
package test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

@WebServlet("/TestGet")
public class TestG extends HttpServlet {
	private static final long serialVersionUID = 1L;
	static Logger logger = LogManager.getLogger(TestG.class);

	public TestG() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		logger.trace("_trace");
		logger.debug("_debug");
		logger.info("_info");
		logger.warn("_warn");
		logger.error("_error");
		logger.fatal("_fatal");
		
		request.setCharacterEncoding("UTF8");
		response.setContentType("text/html; charset=UTF8");
		response.getWriter().append("get1:").append(request.getParameter("aaa"));
		response.getWriter().append("<BR>");
		response.getWriter().append("get2:").append(request.getParameter("bbb"));

		System.out.println("作業フォルダ:" + System.getProperty("user.dir"));

	}
}

			

処理結果

http://localhost:8080/webTest/TestGet
にアクセスすると動作確認できます(プロジェクト名が同じであれば)。

Fileにログを出力する場合、普通にEclipseで実行すれば、Eclipseのフォルダに出力されていると思います。
もしログが存在しない場合は、System.out.printlnで出力した作業フォルダを確認して下さい。
				
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Serverのバージョン名:     Apache Tomcat/9.0.48
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Server ビルド:            Jun 10 2021 09:22:01 UTC
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: サーバーのバージョン番号: 9.0.48.0
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: OS 名:                    Windows 10
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: OS バージョン:            10.0
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: アーキテクチャ:           amd64
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Java Home:                C:\eclipseee\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_16.0.1.v20210528-1205\jre
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: JVM バージョン:           16.0.1+9-24
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: JVM ベンダ:               Oracle Corporation
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: CATALINA_BASE:            C:\eclipseee\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: CATALINA_HOME:            C:\apache-tomcat-9.0.48
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: コマンドライン引数:       -Dcatalina.base=C:\eclipseee\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: コマンドライン引数:       -Dcatalina.home=C:\apache-tomcat-9.0.48
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: コマンドライン引数:       -Dwtp.deploy=C:\eclipseee\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: コマンドライン引数:       --add-opens=java.base/java.lang=ALL-UNNAMED
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: コマンドライン引数:       --add-opens=java.base/java.io=ALL-UNNAMED
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: コマンドライン引数:       --add-opens=java.base/java.util=ALL-UNNAMED
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: コマンドライン引数:       --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: コマンドライン引数:       --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: コマンドライン引数:       -Dfile.encoding=UTF-8
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: コマンドライン引数:       -XX:+ShowCodeDetailsInExceptionMessages
12月 27, 2021 11:05:13 午後 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
情報: APRバージョン[1.7.0]を使用してAPRベースのApache Tomcatネイティブライブラリ[1.2.30]をロードしました。
12月 27, 2021 11:05:13 午後 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
情報: APR機能:IPv6 [true]、sendfile true]、受け入れフィルタ[false]、ランダム[true]、UDS [true]
12月 27, 2021 11:05:13 午後 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
情報: APR/OpenSSL設定:useAprConnector [false]、useOpenSSL [true]
12月 27, 2021 11:05:13 午後 org.apache.catalina.core.AprLifecycleListener initializeSSL
情報: OpenSSLは[OpenSSL 1.1.1k  25 Mar 2021]を正常に初期化しました。
12月 27, 2021 11:05:13 午後 org.apache.coyote.AbstractProtocol init
情報: プロトコルハンドラ ["http-nio-8080"] を初期化します。
12月 27, 2021 11:05:13 午後 org.apache.catalina.startup.Catalina load
情報: サーバーの初期化 [854]ms
12月 27, 2021 11:05:13 午後 org.apache.catalina.core.StandardService startInternal
情報: サービス [Catalina] を起動します
12月 27, 2021 11:05:13 午後 org.apache.catalina.core.StandardEngine startInternal
情報: サーブレットエンジンの起動:[Apache Tomcat/9.0.48]
12月 27, 2021 11:05:14 午後 org.apache.jasper.servlet.TldScanner scanJars
情報: 少なくとも1つのJARが、まだTLDを含んでいないTLDについてスキャンされました。 スキャンしたが、そこにTLDが見つからなかったJARの完全なリストについては、このロガーのデバッグログを有効にしてください。 スキャン中に不要なJARをスキップすると、起動時間とJSPのコンパイル時間が改善されます。
12月 27, 2021 11:05:15 午後 org.apache.coyote.AbstractProtocol start
情報: プロトコルハンドラー ["http-nio-8080"] を開始しました。
12月 27, 2021 11:05:15 午後 org.apache.catalina.startup.Catalina start
情報: サーバーの起動 [1741]ms
2021-12-27 23:05:18.911 p=TRACE c=test.TestG t=http-nio-8080-exec-2 C=test.TestG F=TestG.java M=doGet L=26 m=_trace 
2021-12-27 23:05:18.926 p=DEBUG c=test.TestG t=http-nio-8080-exec-2 C=test.TestG F=TestG.java M=doGet L=27 m=_debug 
2021-12-27 23:05:18.927 p=INFO  c=test.TestG t=http-nio-8080-exec-2 C=test.TestG F=TestG.java M=doGet L=28 m=_info 
2021-12-27 23:05:18.927 p=WARN  c=test.TestG t=http-nio-8080-exec-2 C=test.TestG F=TestG.java M=doGet L=29 m=_warn 
2021-12-27 23:05:18.927 p=ERROR c=test.TestG t=http-nio-8080-exec-2 C=test.TestG F=TestG.java M=doGet L=30 m=_error 
2021-12-27 23:05:18.927 p=FATAL c=test.TestG t=http-nio-8080-exec-2 C=test.TestG F=TestG.java M=doGet L=31 m=_fatal 
作業フォルダ:C:\eclipseee


			

ページのトップへ戻る