1.3. ランタイム設定の設定
application.properties ファイルで、ロギングレベルとカテゴリーを設定できます。
ロギングカテゴリーは階層的です。カテゴリーのロギングレベルを設定すると、設定はそのカテゴリーのすべてのサブカテゴリーに適用されます。
ロギングレベル設定には、ロギングレベルと最小ロギングレベルの 2 つがあります。デフォルトのロギングレベルは INFO で、デフォルトの最小ロギングレベルは DEBUG です。quarkus.log.level および quarkus.log.min-level プロパティーまたはカテゴリーを使用して、グローバルで調整できます。
ロギングレベルを最小ロギングレベルより低く設定する場合は、最小ロギングレベルも調整する必要があります。そうしないと、最小ロギングレベルの値がロギングレベルをオーバーライドします。
過度のロギングは、パフォーマンスに影響を与えます。最小ロギングレベルを調整して、アプリケーションに関連するデータのみを収集できます。ログボリュームを減らすと、メモリー使用量が最適化され、アプリケーションのパフォーマンスが向上する可能性があります。たとえば、ネイティブ実行では、最小レベルにより、低いレベルのチェック(isTraceEnabled)を false に折りたたむことができます。これにより、デッドコードが削除されます。
手順
application.propertiesファイルでロギング出力を設定します。以下の例は、デフォルトのロギングレベルを
INFOロギングに設定し、HibernateDEBUGログを含める方法を示しています。application.propertiesファイルの例quarkus.log.level=INFO quarkus.log.category."org.hibernate".level=DEBUG注記コマンドラインを使用して設定プロパティーを設定する場合は、
"を使用してエスケープします。例
-
-Dquarkus.log.category.\"org.hibernate\".level=TRACE
-
1.3.1. ロギング形式の設定 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus は、人間が判読できるテキストログを生成するパターンベースのロギングフォーマッターを使用します。ログエントリーには、タイムスタンプ、ロギングレベル、クラス名、スレッド ID、およびメッセージが表示されます。専用の設定プロパティーを使用して、各ログハンドラーの形式をカスタマイズできます。
前提条件
- Quarkus Maven プロジェクトがある。
手順
quarkus.log.console.formatの値を設定して、以下のようにコンソールハンドラーを設定します。application.propertiesファイルの例quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%nこの設定により、ログメッセージのフォーマットは以下のようになります。
14:11:07 INFO [ExampleResource] (executor-thread-199) Hello
1.3.1.1. ロギング形式の文字列 リンクのコピーリンクがクリップボードにコピーされました!
次の表に、ログメッセージの形式を設定するために使用できるロギング形式の文字列記号を示します。
| 記号 | 概要 | 説明 |
|---|---|---|
|
|
|
単純な |
|
| カテゴリー | カテゴリー名 |
|
| ソースクラス | ソースクラス名 [a] |
|
| 日付 |
|
|
| 例外 | 例外スタックトレース |
|
| ソースファイル | ソースファイル名 [a] |
|
| ホスト名 | システムのシンプルなホスト名 |
|
| 修飾ホスト名 | システムの完全修飾ホスト名。OS の設定によっては、単純なホスト名と同じになる場合があります。 |
|
| プロセス ID | 現在のプロセス PID |
|
| ソースの場所 | ソースの場所 (ソースファイル名、行番号、クラス名、およびメソッド名) [a] |
|
| ソース行 | ソース行番号 [a] |
|
| フルメッセージ | ログメッセージ (例外トレースを含む) |
|
| ソースメソッド | ソースメソッド名 [a] |
|
| 改行 | プラットフォーム固有の行区切り文字列 |
|
| プロセス名 | 現在のプロセスの名前 |
|
| レベル | メッセージのロギングレベル |
|
| 相対時間 | アプリケーションログの開始からの相対時間 (ミリ秒単位) |
|
| シンプルなメッセージ | 例外トレースのないログメッセージ |
|
| スレッド名 | スレッド名 |
|
| スレッド ID | スレッド ID |
|
| タイムゾーン |
<zone |
|
| マップされた診断コンテキスト値 | マップされた診断コンテキストからの値 |
|
| マップされた診断コンテキスト値 | {property.key=property.value} 形式のマップされた診断コンテキストからのすべての値 |
|
| ネスト化された診断コンテキスト値 | {value1.value2} 形式のネスト化された診断コンテキストからのすべての値 |
[a]
呼び出し元情報を調べるフォーマットシーケンスは、パフォーマンスに影響を与える可能性があります。
| ||
1.3.2. ロギングカテゴリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
ロギングカテゴリーを使用して、ログメッセージを重大度または所属するコンポーネントに基づいて整理できます。各カテゴリーは個別に設定できます。
すべてのカテゴリーについて、同じ設定がコンソール、ファイル、および syslog に適用されます。1 つ以上の名前付きハンドラーをカテゴリーにアタッチすることで、設定をオーバーライドできます。
| プロパティー名 | デフォルト | 説明 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
| ロガーがその出力を親ロガーに送信できるようにします。 |
|
|
| 特定のカテゴリーに割り当てるハンドラーの名前。 |
[a]
一部のエクステンションでは、特定のカテゴリーに対してカスタマイズされたデフォルトのロギングレベルを定義して、ログノイズを減らします。設定でロギングレベルを設定すると、エクステンションで定義されたロギングレベルがオーバーライドされます。
[b]
デフォルトでは、設定されたカテゴリーは、root ロガーカテゴリーからアタッチされたすべてのハンドラーを継承します。
| ||
プロパティーの名前でロギングカテゴリー名を使用する場合は、通常はカテゴリー名の一部であるピリオド(.)をエスケープするために、ロギングカテゴリー名を二重引用符(")内に配置します。
1.3.3. ロギングレベル リンクのコピーリンクがクリップボードにコピーされました!
ロギングレベルを使用して、Quarkus アプリケーションの正常性および安定性への影響または重大度別にログを分類できます。ロギングレベルを使用すると、純粋に情報を示すイベントから重要なイベントをフィルタリングできます。
| ロギングレベル | 説明 |
|---|---|
| OFF | ロギングをオフにする特別なレベル。 |
| FATAL | 重大なサービス障害またはサービス要求を完了できない。 |
| ERROR | リクエストの大幅な中断、リクエストに対応できない場合。 |
| WARN | 重大ではないサービスエラーまたは即時の修正を必要としない可能性がある問題。 |
| INFO | サービスライフサイクルイベントまたは重要な関連する非常に低頻度の情報。 |
| DEBUG | ライフサイクルまたは要求にバインドされていないイベントに関する追加のデバッグ情報を提供するメッセージ。 |
| TRACE | リクエストごとの追加のデバッグ情報を提供する高い頻度で配信されるメッセージ。 |
| ALL | カスタムレベルを含むすべてのメッセージの特別なレベル。 |
また、java.util.logging パッケージによって記述されるロギングレベル名を使用することもできます。
1.3.4. ルートロガー設定 リンクのコピーリンクがクリップボードにコピーされました!
root ロガーカテゴリーは、ロガー階層の最上位にあり、ロギング設定の最上位で設定されます。root ロガーは、サーバーに送信され、ロギングカテゴリーによってキャプチャーされない、指定されたロギングレベル以上のすべてのログメッセージをキャプチャーします。
| プロパティー名 | デフォルト | 説明 |
|---|---|---|
|
|
| すべてのロギングカテゴリーのデフォルトのロギングレベル。 |
|
|
| すべてのロギングカテゴリーのデフォルトの最小ロギングレベル。 |
1.3.5. Quarkus ログハンドラー リンクのコピーリンクがクリップボードにコピーされました!
ログハンドラーは、ログイベントを受信者に送信するロギングコンポーネントです。Quarkus には、次のログハンドラーが含まれています。
- コンソールログハンドラー
-
コンソールログハンドラーはデフォルトで有効になっています。アプリケーションのコンソール (通常はシステムの
stdout) にすべてのログイベントを出力します。 - ファイルログハンドラー
- ファイルログハンドラーはデフォルトで無効になっています。すべてのログイベントをアプリケーションのホスト上のファイルに出力します。ファイルログハンドラーは、ログファイルのローテーションをサポートしています。
- Syslog ログハンドラー
Syslog は、Unix 系システムでログメッセージを送信するプロトコルです。syslog プロトコルの仕様は、RFC 5424 で定義されています。
syslog ハンドラーは、すべてのログイベントを syslog サーバーに送信します (デフォルトでは、syslog サーバーはアプリケーションと同じホストで実行されます)。デフォルトでは、syslog ハンドラーは無効になっています。
1.3.6. ロギング設定の例 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Quarkus プロジェクトのロギングを設定する方法の例を示します。
application.properties ファイルの例
# Format log messages to have shorter time and shorter category prefixes.
quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n
# Remove color from log messages.
quarkus.console.color=false
# Enable console DEBUG logging with the exception of Quarkus logs that have a logging level set to INFO.
quarkus.log.console.level=DEBUG
quarkus.log.category."io.quarkus".level=INFO
application.properties ファイルの例
# Enable file logging and set a path to the log file.
quarkus.log.file.enable=true
quarkus.log.file.path=/tmp/trace.log
# Enable TRACE log messages in a log file.
quarkus.log.file.level=TRACE
# Set a format for the log file output.
quarkus.log.file.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n
# Set logging level to TRACE for specific categories.
quarkus.log.category."io.quarkus.smallrye.jwt".level=TRACE
quarkus.log.category."io.undertow.request.security".level=TRACE
デフォルトでは、root ロガーレベルは INFO に設定されています。DEBUG や TRACE などの低いレベルのログを収集する場合は、root ロガー設定を変更します。
application.properties ファイルの例
# Set path to the log file.
quarkus.log.file.path=/tmp/trace.log
# Configure console format.
quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n
# Configure a console log handler.
quarkus.log.handler.console."STRUCTURED_LOGGING".format=%e%n
# Configure a file log handler.
quarkus.log.handler.file."STRUCTURED_LOGGING_FILE".enable=true
quarkus.log.handler.file."STRUCTURED_LOGGING_FILE".format=%e%n
# Configure the category and associate it with the two named handlers.
quarkus.log.category."io.quarkus.category".level=INFO
quarkus.log.category."io.quarkus.category".handlers=STRUCTURED_LOGGING,STRUCTURED_LOGGING_FILE