wildflyのロギングサブシステムで出てくるルートロガー・ロガー(ログカテゴリ)・ログハンドラーについての解説
こんにちは、小吉です。
過去記事でwildflyにアプリケーションをデプロイして、アプリケーション専用のログファイルを作成するように設定できて、少しロギングサブシステムについて理解が出来てきたので、なるべく優しい言葉を使って解説します。
関連する過去記事はこちらからどうぞ。
wildflyのロギングサブシステムを理解するには、ざっくり3つの設定(ロガー、ルートロガー、ログハンドラー)の概念を掴む必要があります。細かい、かつ正確な説明はwildflyやjbossのドキュメントを見て頂くのが良いです。ここではざっくり初心者が理解し易いように説明します。3つの設定というのがこちらです。
ロガー(ログカテゴリ)
まずはロガーです。
一言でいうと、
ログを拾う人です。
ロガーはログカテゴリが紐づけられていて、そのログカテゴリに該当するログを拾う役割を担います。ログカテゴリとは、たとえば、「com.kokichiblog.helloworldというjavaパッケージのログ」というイメージです。そして、このロガーにはログカテゴリの他に、後述するログハンドラーというものを定義することが出来ます。
ルートロガー
これまた一言でいうと、
ロガーの親玉です。
親玉なので、ログカテゴリの紐づけは無く、各ロガーで拾われなかったログも含めて、全てのログを拾うことができます。ロガーはロガーなので後述するログハンドラーを定義することが出来ます。
wildflyをデフォルト状態で起動すると、デプロイしたアプリケーションのログはserver.logに出力されますが、これはデフォルトのルートロガーがログを拾い、デフォルトのハンドラーにより出力されています。
ログハンドラー
そして、ログハンドラーです。
これまた、一言でいうと、
ログを扱う人です。
たとえば、「ログをファイルに書き込むハンドラー」、「ログをsyslogに送るハンドラー」「ログを標準出力に出力するハンドラー」といった、扱い方に合わせたハンドラーの種類が用意されています。
ではログハンドラーはどのログを扱うのか?
感の良い人はわかったと思います。
そうです、ログハンドラーはロガーが拾ったログを扱います。
なので、ロガーやルートロガーにログハンドラーを設定することが出来るということです。
どんなことができる?
これら3つの設定を組み合わせる事で、例えば以下のようなログ設定が出来ます。
- javaパッケージ「com.kokichiblog.helloworld」の全てのログをhelloworld.logに出力する。
- javaパッケージ「com.kokichiblog.helloworld」のERROR以上のログをhelloworld_error.logに出力し、かつsyslogに送信する。
などなど。
どのようにログを保存したいか、運用に合わせて柔軟に設定できそうですね。上記を理解できていれば、簡単に設定できますので、気になる方はぜひ色々試してみて頂ければと思います。
最後までお読み頂きありがとうございました。
参考書籍
-
前の記事
wildflyでデプロイしたアプリケーションのログを専用のログファイルに出力する方法 2019.06.04
-
次の記事
wildflyのログハンドラー一覧 2019.06.15