JavaEEでlog4jを使って出力したログをwildflyのserver.logに出力する手順

こんにちは、小吉です。

今回は、JavaEEアプリケーションでlog4jを使ったログ出力を行い、それをwildflyのserver.logに出力する手順を共有したいと思います。

wildflyはロギングサブシステムというログ機能を持っており、アプリケーションでlog4jなどを使っている場合には、それを肩代わりしてくれるため、wildfly側の設定で細かなログ出力設定が可能です。

ただ、wildfly-16.0.0時点では、まだlog4j2へ対応していないようなので、log4j(1系)を使って実施します。

本記事では、アプリケーションのログをwildflyのデフォルトであるserver.logに出力することまでを実施します。ログ出力設定については後日触ってみて記事にしようと思います。
IDEは前回記事同様、IntelliJを使用します。

前回の記事「IntelliJでwildflyを使ったHello Wolrdを素早く簡単に実施する手順」で、簡単なHello Worldを作成して動作することを確認できたので、引き続きこの環境を利用したいと思います。IntelliJやJavaEEの初心者の方は、前回の記事からお読み頂ければスムーズに実施できると思います。

前提

  • windows10
  • IntelliJ Ultimateをインストール済みであること(Free trial期間でも可)
  • IntelliJでJavaEEのプロジェクトを作成済みであること
  • wildfly-16.0.0をプロジェクトのアプリケーションサーバとして設定済みであること

前回の記事「IntelliJでwildflyを使ったHallo Wolrdを素早く簡単に実施する手順」を実施していれば、上記前提はクリアしていることになります。

log4j(1系)のjarファイルの取得

log4j(1系)のjarファイルを以下のApacheのサイトからダウンロードします。
Apache Download Apache log4j
「 log4j-1.2.17.zip 」をクリックし、適当なミラーサイトからダウンロードします。

ダウンロードしたlog4j-1.2.17.zipを展開し、中にlog4j-1.2.7.jarというファイルがあることを確認します。

プロジェクトへlog4jライブラリを追加

IntelliJのメニューにて、File->Project Structureを開きます。
画面上部にある「+」を押し、Javaを選択します。

先程ダウンロードしてきたlog4j-1.2.7.jarを選択してOKを押します。

追加先のモジュール(プロジェクト)の画面が表示されたら、選択した状態でOKを押します。

以下のようにプロジェクトにlog4jが追加されます。

サンプルコードの作成

プロジェクトのsrcフォルダを右クリックして、New->Java Classを選択して、Nameを「HelloWorld」としてOKを押します。

作成したHelloWorld.javaの内容は以下とします。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

public class HelloWorld extends HttpServlet {
    private static final Logger LOGGER = LogManager.getLogger(HelloWorld.class);
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
            throws IOException, ServletException
    {

        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("HelloWorld");
        out.println("</html>");
        out.close();
        LOGGER.info("HelloWorld info log");
    }
}

web > WEB-INF > web.xmlの内容を以下とします。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd"
           version="4.0">
    <servlet>
        <servlet-name>helloworld</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>helloworld</servlet-name>
        <url-pattern>/helloworld</url-pattern>
    </servlet-mapping>
</web-app>

実行

Run -> Runを選択して実行します。

Artifact is deployed successfullyというデプロイ完了のログが表示されたら、作成したサーブレットのURLにアクセスしてみましょう。

http://localhost:8181/web_war_exploded/helloworld

以下の画面が表示されれば作成したサーブレットを実行できています。

ログ確認

では、wildflyのserver.logを見てみましょう。
server.logは以下のパスにあります。

C:\wildfly-16.0.0.Final\standalone\log\server.log

以下のようなログが出力されていれば成功です。

2019-05-27 23:09:28,143 INFO  [HelloWorld] (default task-1) HelloWorld info log
2019-05-27 23:09:29,301 INFO [HelloWorld] (default task-1) HelloWorld info log
2019-05-27 23:12:00,763 INFO [HelloWorld] (default task-1) HelloWorld info log
2019-05-27 23:14:00,960 INFO [HelloWorld] (default task-1) HelloWorld info log

参考書籍