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
参考書籍
-
前の記事
IntelliJでwildflyを使ったHello Wolrdを素早く簡単に実施する手順 2019.05.18
-
次の記事
IntelliJ IDEAで生成したJavaEEのwarファイルをwildflyにデプロイする手順 2019.05.29