13.3. コンソールログハンドラー
コンソールログハンドラーはデフォルトで有効になっており、コンソール用に構造化されていないログメッセージを提供します。
13.3.1. コンソールログ形式を設定する
Red Hat build of Keycloak は、デフォルトで人間が判読できるテキストログを生成するパターンベースのロギングフォーマッターを使用します。
これらの行のログ形式テンプレートは、ルートレベルで適用できます。デフォルトの形式テンプレートは次のとおりです。
-
%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n
この形式の文字列では、下表の記号がサポートされています。
記号 | 概要 | 説明 |
---|---|---|
%% | % | 単純な % 文字をレンダリングします。 |
%c | カテゴリー | ログカテゴリー名をレンダリングします。 |
%d{xxx} | 日付 |
指定された日付形式の文字列で日付をレンダリングします。 |
%e | 例外 | 出力された例外をレンダリングします。 |
%h | Hostname | 単純なホスト名をレンダリングします。 |
%H | 修飾ホスト名 | 完全修飾ホスト名をレンダリングします。OS 設定によっては、単純なホスト名と同じになる場合があります。 |
%i | プロセス ID | 現在のプロセスの PID をレンダリングします。 |
%m | フルメッセージ | 出力された場合は、ログメッセージと例外をレンダリングします。 |
%n | 改行 | プラットフォーム固有の行区切り文字列をレンダリングします。 |
%N | プロセス名 | 現在のプロセスの名前をレンダリングします。 |
%p | レベル | メッセージのログレベルをレンダリングします。 |
%r | 相対時間 | アプリケーションログの開始からの相対時間 (ミリ秒単位) をレンダリングします。 |
%s | 単純なメッセージ | 例外トレースのないログメッセージをレンダリングします。 |
%t | スレッド名 | スレッド名をレンダリングします。 |
%t{id} | スレッド ID | スレッド ID をレンダリングします。 |
%z{<zone name>} | タイムゾーン | ログ出力のタイムゾーンを <zone name> に設定します。 |
%L | 行番号 | ログメッセージの行番号をレンダリングします。 |
13.3.2. ロギング形式を設定する
ログに記録される行のログ形式を設定するには、次の手順を実行します。
- 前述の表を使用して、形式テンプレートを作成します。
以下のコマンドを入力します。
bin/kc.[sh|bat] start --log-console-format="'<format>'"
;
などの特殊なシェル文字を含むコマンドを呼び出す場合は、CLI を使用して文字をエスケープする必要があります。代わりに、設定ファイルで設定することを検討してください。
例: 完全修飾カテゴリー名を短縮する
bin/kc.[sh|bat] start --log-console-format="'%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n'"
この例では、テンプレートでデフォルトの [%c]
の代わりに [%c{3.}]
を設定することで、カテゴリー名を 3 文字に短縮します。
13.3.3. JSON またはプレーンコンソールのロギングを設定する
デフォルトでは、コンソールログハンドラーはプレーンな非構造化データをコンソールに記録します。代わりに構造化された JSON ログ出力を使用するには、次のコマンドを入力します。
bin/kc.[sh|bat] start --log-console-output=json
ログメッセージの例
{"timestamp":"2022-02-25T10:31:32.452+01:00","sequence":8442,"loggerClassName":"org.jboss.logging.Logger","loggerName":"io.quarkus","level":"INFO","message":"Keycloak 18.0.0-SNAPSHOT on JVM (powered by Quarkus 2.7.2.Final) started in 3.253s. Listening on: http://0.0.0.0:8080","threadName":"main","threadId":1,"mdc":{},"ndc":"","hostName":"host-name","processName":"QuarkusEntryPoint","processId":36946}
JSON 出力を使用する場合、色は無効になり、--log-console-format
で設定された形式設定は適用されません。
非構造化ロギングを使用するには、次のコマンドを入力します。
bin/kc.[sh|bat] start --log-console-output=default
ログメッセージの例
2022-03-02 10:36:50,603 INFO [io.quarkus] (main) Keycloak 18.0.0-SNAPSHOT on JVM (powered by Quarkus 2.7.2.Final) started in 3.615s. Listening on: http://0.0.0.0:8080
13.3.4. 色
非構造化ログの色付きコンソールログ出力は、デフォルトでは無効になっています。色を使用すると読みやすくなりますが、ログを外部のログ集約システムに送信する際に問題が発生する可能性があります。色分けされたコンソールログ出力を有効または無効にするには、次のコマンドを入力します。
bin/kc.[sh|bat] start --log-console-color=<false|true>