第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.3.1. レベルを個別のオプションとして設定する リンクのコピーリンクがクリップボードにコピーされました!
カテゴリー固有のログレベルを設定する場合は、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