Payara の JSON Log Formatter (ja)

この記事は Payara Advent Calendar 2016 の 12 日目です。昨日は「Payara Issue Tracker のラベル一覧」です。

Payara 4.1.1.164 から、Payara のログを JSON 形式で出力できるようになりました。Payara には当初から GlassFish から引き継いだ 2 種類のログ出力形式―ULF (Unified Logging Format : Sun のミドルウェアで使用されていた形式) および ODL (Oracle Diagnostic Logging : Oracle Fusion Middleware で採用されている形式)―が備わっていましたが、最新リリースで新たに第 3 の形式である JSON が加わったことになります。

1. JSON Log Formatter を有効にする

ログ形式の変更は管理コンソールを用いるとプルダウンリストだけで操作できます。asadmin でも変更は可能ですが、コマンド記述が少々長くなります。この記事では管理コンソールでのログ形式変更について取り上げます。まずは figure 1 を参照してください。

logger-settings.png
figure 1 - ロガーの設定画面

ロガーの設定で、ログ形式の種類を選択することができます。ログの種類は ULF、ODL、さらに Payara 4.1.1.164 からは JSON の中から選択します。コンソールとログ・ファイルでそれぞれ別の形式を選択することも可能です。実際に Payara の既定値はコンソールが ULF 形式、ログ・ファイルが ODL 形式となっています。この例では、ログ・ファイルのログ形式を ODL から JSON に変更しています。

2. JSON ログ形式

Payara 4.1.1.163 までの既定値である ODL 形式のログ・ファイルは以下のようになります。

[2016-12-01T10:26:42.428+0900] [Payara 4.1] [INFO] [NCLS-LOGGING-00009] [javax.enterprise.logging] [tid: _ThreadID=17 _ThreadName=RunLevelControllerThread-1480555602091] [timeMillis: 1480555602428] [levelValue: 800] [[
  Running Payara Version: Payara Server  4.1.1.164 #badassfish (build 28)]]

コンソール出力の既定値であり、GlassFish v3 の出力形式であった ULF 形式のログファイルは以下のようになります。

[#|2016-12-02T15:37:59.788+0900|INFO|Payara 4.1|javax.enterprise.logging|_ThreadID=17;_ThreadName=RunLevelControllerThread-1480660679551;_TimeMillis=1480660679788;_LevelValue=800;_MessageID=NCLS-LOGGING-00009;|
  Running Payara Version: Payara Server  4.1.1.164 #badassfish (build 28)|#]

Payara 4.1.1.164 で追加された JSON 形式のログ・ファイルは以下のようになります。

{"_Timestamp":"2016-12-02T14:22:40.237+0900","_Level":"INFO","_Version":"Payara 4.1","_LoggerName":"javax.enterprise.logging","_ThreadID":"17","_ThreadName":"RunLevelControllerThread-1480656159958","_TimeMillis":"1480656160237","_LevelValue":"800","_MessageID":"NCLS-LOGGING-00009","_LogMessage":"Running Payara Version: Payara Server  4.1.1.164 #badassfish (build 28)"}

JSON 形式のログは他の形式と比較して煩雑になりますが、JSON パーサーを使用して解析することができるため、ログ・データの再利用を行う上では有利になります。