wildflyでデプロイしたアプリケーションのログを専用のログファイルに出力する方法

こんにちは、小吉です。

今回はwildflyにデプロイしたアプリケーションのログを、デフォルトのserver.logではなく、専用のログファイルに出力する設定をしてみようと思います。wildflyのlogging(ロギング)サブシステムというものを使えば出来そうなので挑戦してみます。

前提

  • Windows10環境であること
  • wildfly16をインストール済みであること
  • wildflyにlog4jを使ってログ出力するアプリケーションをデプロイ済みであること
  • wildflyの管理コンソールにログインできること

過去記事で、以下のような手順を紹介してきました。

これらの手順を実施すれば、上記の前提をクリアしていることになりますので、初心者の方などは、過去記事を順に実施して頂ければと思います。

ロギングサブシステムについて

本記事では、wildflyのロギングサブシステムの具体的な説明は割愛しますが、以下ポイントを押さえておいておけばとりあえず使えるかと思います。

  • アプリケーションでlog4jを使って出力していたログをwildflyのロギングサブシステムの設定でコントロールできる。
  • どのアプリケーションのログを扱うかをログカテゴリーとして定義する。
  • ログをどう扱うかをログハンドラーとして定義する。
  • ログハンドラ―はログカテゴリーに紐づける。

百聞は一見に如かず!ということで、やってみましょう!

ログハンドラーを作成する

管理コンソールにログインして、画面右上のConfigurationを選択します。

Subsystems -> Logging -> Configuration と辿ってViewボタンを選択します。

すると、以下のようなロギングの設定画面が表示されます。

左メニューから、Handler -> File Handler を選択します。

以下のようなFile Handlerの設定画面が表示されます。
File Handlerとは、ログハンドラーの一つで、ログをファイルに出力するログハンドラーです。今回はアプリケーションのログを専用ファイルに出力したいので、ログハンドラーを追加します。画面右にあるAddを選択します。

ログハンドラーの情報を入力する画面が表示されるので、以下を入力してAddを選択します。

Name: HELLOWORLD
File / Path: helloworld.log
 ->ログ出力ファイル名
File / Relative To: jboss.server.log.dir
 ->ログ出力フォルダ
 ->上記設定は、C:\wildfly-16.0.0.Final\standalone\logのことです。
Formatter: (default)
Level: ALL

これでログハンドラーの作成は完了です。
C:\wildfly-16.0.0.Final\standalone\configuration\standalone.xml
に、以下のような設定が書き込まれているはずです。

ログカテゴリーを作成する

左メニューから、Categories を選択します。
以下のようなCategoriesの設定画面が表示されます。
ログカテゴリーには、どのアプリケーションのログをキャプチャするかを定義する形で追加します。画面右にあるAddを選択します。

ログカテゴリーの情報を入力する画面が表示されるので、以下を入力してAddを選択します。

Name: HelloWorld
 ->アプリケーションのパッケージ名やクラス名を記入します。過去記事で作成したHalloWorldクラスのログをキャプチャしたいため、HelloWorldとしています。
Level: ALL
Handlers: HELLOWORLD
 ->先程作成したログハンドラーを指定します。
Use Parent Handlers: (default)

これでログカテゴリーの作成は完了です。
C:\wildfly-16.0.0.Final\standalone\configuration\standalone.xml
に、以下のような設定が書き込まれているはずです。

ログ出力確認

それでは、デプロイしたアプリケーションに対して、ログ出力するようなリクエストを送ってみましょう。

過去記事を参考に進めてくれた場合は、以下のURLにアクセスすると、infoログが出力されるようになっていますのでアクセスしてみてください。

http://127.0.0.1:8181/web_war/helloworld

その後、C:\wildfly-16.0.0.Final\standalone\log直下に、helloworld.logというログファイルが生成されているので、中身を見てみましょう。

アプリケーションのログのみ出力されていますね!
これで、アプリケーションの専用のログファイルを作成することが出来ました。

今後、ログカテゴリーやログハンドラーの細かい設定もいじってみたいと思っています。

最後までお読み頂きありがとうございました。

参考書籍