第16章 ロギングの設定
Red Hat build of Keycloak のロギングを設定します。
Red Hat build of Keycloak は、JBoss Logging フレームワークを使用します。以下は、共通の親ログハンドラー root を持つ使用可能なログハンドラーの概要です。
-
console -
file -
syslog
16.1. ロギング設定 リンクのコピーリンクがクリップボードにコピーされました!
ロギングは、Red Hat build of Keycloak でカテゴリーごとに行われます。ロギングは、ルートログレベル、または org.hibernate や org.keycloak などのより具体的なカテゴリーで設定できます。特定のログハンドラーごとにログレベルをカスタマイズすることも可能です。
この章では、ロギングの設定方法を説明します。
16.1.1. ログレベル リンクのコピーリンクがクリップボードにコピーされました!
次の表は、使用可能なログレベルを定義しています。
| レベル | 説明 |
|---|---|
| FATAL | いかなる種類の要求にもまったく対応できない致命的な障害。 |
| ERROR | 要求を処理できなくなる重大なエラーまたは問題。 |
| WARN | 即時の修正を必要としない場合もある、致命的ではないエラーまたは問題。 |
| INFO | Red Hat build of Keycloak のライフサイクルイベントまたは重要な情報。低頻度で発生。 |
| DEBUG | データベースログなど、デバッグ目的の詳細情報。高頻度で発生。 |
| TRACE | 最も詳細なデバッグ情報。非常に高い頻度で発生。 |
| ALL | すべてのログメッセージ向けの特別なレベル。 |
| OFF | ログを完全にオフにする特別なレベル (推奨されません)。 |
16.1.2. ルートログレベルを設定する リンクのコピーリンクがクリップボードにコピーされました!
より具体的なカテゴリーロガーのログレベル設定が存在しない場合は、代わりにそれを含むカテゴリーが使用されます。それを含むカテゴリーがない場合は、ルートロガーレベルが使用されます。
ルートログレベルを設定するには、次のコマンドを入力します。
bin/kc.[sh|bat] start --log-level=<root-level>
bin/kc.[sh|bat] start --log-level=<root-level>
このコマンドには、次のガイドラインを使用してください。
-
<root-level>には、前述の表で定義されたレベルを指定します。 -
ログレベルで大文字と小文字は区別されません。たとえば、
DEBUGまたはdebugを使用できます。 -
誤ってログレベルを 2 回設定してしまった場合、リストの最後に指定されたログレベルになります。たとえば、
--log-level="info,…,DEBUG,…"の構文を含めた場合、ルートロガーはDEBUGになります。
16.1.3. カテゴリー固有のログレベルを設定する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak では、特定の領域に異なるログレベルを設定できます。このコマンドを使用すると、別のログレベルが必要なカテゴリーをコンマ区切りリストで指定できます。
bin/kc.[sh|bat] start --log-level="<root-level>,<org.category1>:<org.category1-level>"
bin/kc.[sh|bat] start --log-level="<root-level>,<org.category1>:<org.category1-level>"
カテゴリーに適用される設定は、より具体的な一致するサブカテゴリーを含めない限り、そのサブカテゴリーにも適用されます。
例
bin/kc.[sh|bat] start --log-level="INFO,org.hibernate:debug,org.hibernate.hql.internal.ast:info"
bin/kc.[sh|bat] start --log-level="INFO,org.hibernate:debug,org.hibernate.hql.internal.ast:info"
この例では、次のようにログレベルを設定します。
- すべてのロガーのルートログレベルは INFO に設定されます。
- 通常、ハイバーネートログレベルは DEBUG に設定されます。
-
SQL 抽象構文ツリーが詳細なログ出力を作成しないようにするために、特定のサブカテゴリー
org.hibernate.hql.internal.astが INFO に設定されます。その結果、SQL 抽象構文ツリーはdebugレベルでは表示されずに省略されます。
16.1.4. ログメッセージのコンテキストの追加 リンクのコピーリンクがクリップボードにコピーされました!
Mapped Diagnostic Context (MDC)を使用したログメッセージは プレビュー であり、完全にサポートされていません。この機能はデフォルトで無効化されています。
リクエストを実行している現在のレルムやクライアントなど、各ログ行の追加コンテキスト情報を有効にできます。
オプション log-mdc-enabled を使用して有効にします。
設定例
bin/kc.[sh|bat] start --features=log-mdc --log-mdc-enabled=true
bin/kc.[sh|bat] start --features=log-mdc --log-mdc-enabled=true
出力例
2025-06-20 14:13:01,772 {kc.clientId=security-admin-console, kc.realmName=master} INFO ...
2025-06-20 14:13:01,772 {kc.clientId=security-admin-console, kc.realmName=master} INFO ...
設定オプション log-mdc-keys を設定して追加するキーを指定します。
16.1.5. レベルを個別のオプションとして設定する リンクのコピーリンクがクリップボードにコピーされました!
カテゴリー固有のログレベルを設定する場合は、log-level オプションを使用する代わりに、個別の log-level-<category> オプションとしてログレベルを設定することもできます。これは、以前に設定した log-level オプションを上書きせずに、選択したカテゴリーのログレベルを設定する場合に便利です。
例
サーバーを次のように起動した場合:
bin/kc.[sh|bat] start --log-level="INFO,org.hibernate:debug"
bin/kc.[sh|bat] start --log-level="INFO,org.hibernate:debug"
その後、環境変数 KC_LOG_LEVEL_ORG_KEYCLOAK=trace を設定して、org.keycloak カテゴリーのログレベルを変更できます。
log-level-<category> オプションは log-level よりも優先されます。これにより、log-level オプションで設定された内容を上書きできます。たとえば、上記の CLI の例で KC_LOG_LEVEL_ORG_HIBERNATE=trace を設定すると、org.hibernate カテゴリーは debug ではなく trace レベルを使用します。
環境変数を使用する場合、カテゴリー名は大文字にし、ドットはアンダースコアに置き換える必要があることに注意してください。他の設定ソースを使用する場合は、カテゴリー名を「そのまま」指定する必要があります。例:
bin/kc.[sh|bat] start --log-level="INFO,org.hibernate:debug" --log-level-org.keycloak=trace
bin/kc.[sh|bat] start --log-level="INFO,org.hibernate:debug" --log-level-org.keycloak=trace