4.1 ロギングレベルのリスト
プログラムを作成してサーバーにアップロードすると、すぐに疑問が生じます。
debug()
での作業中にメソッドが機能しないことを確認するにはどうすればよいですかproduction
?- ログの情報が多すぎます。エラー メッセージのみを残しますか?
- アプリケーションの一部の詳細なログを確認するにはどうすればよいですか?
もちろん、ログの作成者も数十年前に同じ目に遭っていました。この問題が C 言語でどのように解決されたかは説明しませんが、Java 言語では非常に見事に解決されました。
ログは、情報を に書き込む前にデータをフィルタリングします。ログ レベルを設定することで、ログの詳細をすばやく増減できます。これらのレベルについては、次の表で説明します。
レベル | ノート | |
---|---|---|
1 | 全て | すべてのメッセージをログに記録する |
2 | 痕跡 | デバッグ時の小さなメッセージ |
3 | デバッグ | デバッグに重要なメッセージ |
4 | 情報 | シンプルなメッセージ |
5 | 警告 | 致命的、エラー、警告のみを書き込みます |
6 | エラー | 書き込み専用エラーと致命的エラー |
7 | 致命的 | 致命的なエラーのみを書き込みます |
8 | オフ | メッセージをログに書き込まないでください |
これらのレベルは、メッセージをフィルタリングするときに使用されます。ログ レベルを に設定するとWARN
、重要度が低いメッセージはすべてWARN
破棄されます: TRACE
、DEBUG
、INFO
。フィルタリング レベルを に設定するとFATAL
、偶数になりますERROR’ы
。
フィルタリングで使用される重大度レベルはさらに 2 つあります - これOFF
(すべてのメッセージを破棄) とALL
- すべてのメッセージを書き込む (何も破棄しません)。
4.2 ログの設定例
簡単なログ設定の例を見てみましょう。これを行うには、log4j.properties ファイルが必要です。このファイルはリソース フォルダーに配置できます。次のコンテンツを追加しましょう。
# Root logger option
log4j.rootLogger=WARN, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}
ここの最初の行で、ログレベル - を設定しますWARN
。これは、ステータスとともにロガーに書き込まれるメッセージは無視されるDEBUG
ことを意味しますINFO
。
- 使用するアペンダーのタイプを指定します -
ConsoleAppender
- ログを書き込む場所を指定します -
System.out
- 記録形式を制御するクラスを設定します -
PatternLayout
- すべてのメッセージの録音形式を設定します - 日付と時刻
4.3 よくあるロギングの間違い
そしてもう 1 つの重要な点は、ロギングでよくあるエラーです。何かをするためのオプションはそれほど多くありませんが、よくある間違いがいくつか特定できます。
- ロギングが多すぎます。すべてのステップをログに記録する必要はありませんが、理論的には重要になる可能性があります。ルールがあります。ログのパフォーマンスへの負荷は 10% までです。そうしないと、パフォーマンスの問題が発生します。
- すべてのデータを 1 つのファイルに記録します。これにより、特定のシステムにはファイル サイズ制限があることは言うまでもなく、ある時点で読み取り/書き込みが非常に困難になります。
- 間違ったログレベルの使用。ログの各レベルには明確な境界があり、それらを尊重する必要があります。境界があいまいな場合は、どのレベルを使用するかについて合意できます。
GO TO FULL VERSION