16.2. ログハンドラーを有効にする


ログハンドラーを有効にするには、次のコマンドを入力します。

bin/kc.[sh|bat] start --log="<handler1>,<handler2>"
Copy to Clipboard Toggle word wrap

使用可能なハンドラーは次のとおりです。

  • 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
Copy to Clipboard Toggle word wrap

ルートログレベルは 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
Copy to Clipboard Toggle word wrap

ルートレベルは、最も詳細な必要なレベル (この場合は 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
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

ログメッセージの例

{"@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"}
Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat