16.2. ログハンドラーを有効にする
ログハンドラーを有効にするには、次のコマンドを入力します。
bin/kc.[sh|bat] start --log="<handler1>,<handler2>"
bin/kc.[sh|bat] start --log="<handler1>,<handler2>"
使用可能なハンドラーは次のとおりです。
-
console
-
file
-
syslog
後述する、より具体的なハンドラー設定は、ハンドラーがこのコンマ区切りリストに追加された場合にのみ有効になります。
16.2.1. 各ハンドラーのログレベルを指定する リンクのコピーリンクがクリップボードにコピーされました!
log-level
プロパティーは、グローバルルートログレベルと選択したカテゴリーのレベルを指定します。ただし、最新のアプリケーション要件に準拠するには、ログレベルに対してよりきめ細かいアプローチが必要です。
特定のハンドラーのログレベルを設定するために、log-<handler>-level
(<handler>
は使用可能なログハンドラー) 形式のプロパティーが導入されました。
つまり、ログレベル設定のプロパティーは次のようになります。
-
log-console-level
- コンソールログハンドラー -
log-file-level
- File ログハンドラー -
log-syslog-level
- Syslog ログハンドラー
log-<handler>-level
プロパティーは、特定のログハンドラーが有効になっている場合にのみ使用できます。詳細は、以下のログハンドラー設定を参照してください。
「ログレベル」 セクションで指定されたログレベルのみが受け入れられ、小文字でなければなりません。ログハンドラーの特定のカテゴリーを指定する機能はまだサポートされていません。
16.2.1.1. 一般原則 リンクのコピーリンクがクリップボードにコピーされました!
特定のハンドラーごとにログレベルを設定しても、log-level
プロパティーで指定された ルートレベルはオーバーライドされない ことを理解する必要があります。ログハンドラーは、ロギングシステム全体の最大の詳細度を表すルートログレベルを考慮します。つまり、個々のログハンドラーはルートロガーよりも詳細度が低くなるように設定できますが、それ以上には設定できません。
具体的には、ハンドラーに任意のログレベルが定義されている場合、そのログレベルのログレコードが出力に存在するわけではありません。その場合、ルート log-level
も評価する必要があります。ログハンドラーレベルは ルートログレベルの制限 を提供し、ログハンドラーのデフォルトのログレベルは all
(制限なし) です。
16.2.1.2. 例 リンクのコピーリンクがクリップボードにコピーされました!
例: ファイルハンドラーの場合は debug
、コンソールハンドラーの場合は info
:
bin/kc.[sh|bat] start --log=console,file --log-level=debug --log-console-level=info
bin/kc.[sh|bat] start --log=console,file --log-level=debug --log-console-level=info
ルートログレベルは debug
に設定されているため、すべてのログハンドラーはその値を継承します。File ログハンドラーも同様です。コンソールで debug
レコードを非表示にするには、コンソールハンドラーの最小 (最も深刻でない) レベルを info
に設定する必要があります。
例: すべてのハンドラーに対して warn
、ファイルハンドラーに対しては debug
:
bin/kc.[sh|bat] start --log=console,file,syslog --log-level=debug --log-console-level=warn --log-syslog-level=warn
bin/kc.[sh|bat] start --log=console,file,syslog --log-level=debug --log-console-level=warn --log-syslog-level=warn
ルートレベルは、最も詳細な必要なレベル (この場合は debug
) に設定する必要があり、他のログハンドラーもそれに応じて修正する必要があります。
例: すべてのハンドラーの場合は info
、ただし Syslog ハンドラーの場合は debug
+ org.keycloak.events:trace
:
bin/kc.[sh|bat] start --log=console,file,syslog --log-level=debug,org.keycloak.events:trace, --log-syslog-level=trace --log-console-level=info --log-file-level=info
bin/kc.[sh|bat] start --log=console,file,syslog --log-level=debug,org.keycloak.events:trace, --log-syslog-level=trace --log-console-level=info --log-file-level=info
org.keycloak.events:trace
を表示するには、Syslog ハンドラーの trace
レベルを設定する必要があります。
16.2.2. ログハンドラーに異なる JSON 形式を使用する リンクのコピーリンクがクリップボードにコピーされました!
すべてのログハンドラーは、JSON 形式で構造化されたログ出力機能を提供します。これは log-<handler>-output=json
形式のプロパティーによって有効にできます (<handler>
はログハンドラーです)。
生成された JSON の異なる形式が必要な場合は、次の JSON 出力形式を利用できます。
-
default
(デフォルト) -
ecs
ecs
値は ECS (Elastic Common Schema) を参照します。
ECS は、Elastic ソリューションで使用される共通のフィールドセットを定義する、オープンソースのコミュニティー主導の仕様です。ECS 仕様は、OpenTelemetry によって管理される単一の標準を作成することを目標として、OpenTelemetry Semantic Conventions と統合されています。
JSON 出力形式を変更するために、log-<handler>-json-format
(<handler>
はログハンドラー) 形式のプロパティーが導入されました。
-
log-console-json-format
- コンソールログハンドラー -
log-file-json-format
- ファイルログハンドラー -
log-syslog-json-format
- Syslog ログハンドラー
16.2.2.1. 例 リンクのコピーリンクがクリップボードにコピーされました!
コンソールログハンドラーの ECS (Elastic Common Schema) 形式の JSON ログを取得する場合は、次のコマンドを入力します。
bin/kc.[sh|bat] start --log-console-output=json --log-console-json-format=ecs
bin/kc.[sh|bat] start --log-console-output=json --log-console-json-format=ecs
ログメッセージの例
{"@timestamp":"2025-02-03T14:53:22.539484211+01:00","event.sequence":9608,"log.logger":"io.quarkus","log.level":"INFO","message":"Keycloak 999.0.0-SNAPSHOT on JVM (powered by Quarkus 3.17.8) started in 4.615s. Listening on: http://0.0.0.0:8080","process.thread.name":"main","process.thread.id":1,"mdc":{},"ndc":"","host.hostname":"host-name","process.name":"/usr/lib/jvm/jdk-21.0.3+9/bin/java","process.pid":77561,"data_stream.type":"logs","ecs.version":"1.12.2","service.environment":"prod","service.name":"Keycloak","service.version":"999.0.0-SNAPSHOT"}
{"@timestamp":"2025-02-03T14:53:22.539484211+01:00","event.sequence":9608,"log.logger":"io.quarkus","log.level":"INFO","message":"Keycloak 999.0.0-SNAPSHOT on JVM (powered by Quarkus 3.17.8) started in 4.615s. Listening on: http://0.0.0.0:8080","process.thread.name":"main","process.thread.id":1,"mdc":{},"ndc":"","host.hostname":"host-name","process.name":"/usr/lib/jvm/jdk-21.0.3+9/bin/java","process.pid":77561,"data_stream.type":"logs","ecs.version":"1.12.2","service.environment":"prod","service.name":"Keycloak","service.version":"999.0.0-SNAPSHOT"}