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は以下になります。
- log4j-api-2.17.0.jar
- log4j-core-2.17.0.jar
- log4j-web-2.17.0.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
ページのトップへ戻る