どのログ レベルを使用する必要がありますorg.slf4j.logger.Logger.trace or debug
か? 低レベルの開発者ログを記録するためですか?
5 に答える
これは、ログレベルを説明する良いリストです。
デバッグ これは、最も詳細なログレベル(最大ボリューム設定)です。私は通常、デバッグは本番システムの範囲外であると考えており、開発とテストにのみ使用していました。私は自分のログレベルを適切に取得することを目指しているので、十分な情報があり、情報レベル以上でこれをログに記録するように努めています。
情報 情報レベルは通常、システムの実行と管理に役立つ情報を出力するために使用されます。情報は、アプリケーションの主要な領域の入口点と出口点を記録するために使用されるレベルでもあります。ただし、開発およびテスト中の粒度を高めるために、デバッグレベルでエントリポイントとエグジットポイントを追加することもできます。
警告 警告は、処理された「例外」またはその他の重要なログイベントによく使用されます。たとえば、アプリケーションに構成設定が必要であるが、設定が欠落している場合に備えてデフォルトがある場合は、警告レベルを使用して、欠落している構成設定をログに記録する必要があります。
エラー エラーは、未処理のすべての例外をログに記録するために使用されます。これは通常、アプリケーションの境界にあるcatchブロック内に記録されます。
Fatal Fatalは、これらのイベントをすばやく見つけることが不可欠である特別な例外/条件のために予約されています。私は通常、Fatalがアプリケーション開発の早い段階で使用されることを期待していません。特定のイベントがFatalに昇格する価値があるかどうかは、通常、FATALモニカの経験に値する状況を特定できるのは経験によってのみです。結局のところ、エラーはエラーです。
http://thejoyofcode.com/Logging_Levels_and_how_to_use_them.aspxから
開発者ログの意味によって異なります。デバッグ情報を意味する場合は、明らかDEBUG
に使用する必要があります。
TRACE
人々は、メソッドの開始、メソッドの終了など、有効にするとログファイルを散らかすような非常に細かいログを使用する傾向があります。
この方法で例を示すことができます。
public String fetchMessage(long id) {
logger.entry(id);
logger.debug("Retrieving message from database");
String message = this.messageService.fetchMessageById(id);
logger.exit(message);
}
ログは、デバッグや場合によってはトラブルシューティングに非常に重要です。必要なすべての情報をログに記録することをお勧めします。ただし、過度のロギングは、長い XML メッセージの書き込みなどのパフォーマンスを低下させる可能性もあります。
そのため、ロギングに使用できるさまざまなレベルがあります。情報の種類に応じて適切なレベルを選択する必要があります。
たとえば、catch ブロックにエラー レベルのログがあります。
catch (Exception e) {
log.error("Exception... information.");
}
常に必要ないくつかの明白な情報。
log.info("ログ情報"); //基本情報 - 常にオン
デバッグ レベル情報
log.debug("デバッグ値..."); //必要に応じてこのレベルをオンにできます。
過度のロギングから節約されます。
経験則:- 機密情報をログに記録しないでください。
これは、ローカルワークフローと作業方法によって異なります。
経験則では、INFOは常にオンであり、フォレンジック分析に必要な場合はDEBUGが本番環境にログインしますが、TRACEは開発者のマシンの外部にはログインしません。
これは、調査するために利用可能な情報が必要な場合は、デバッグ時にログに記録することを意味します。そうでない場合は、トレースでログに記録します。
実際には「開発者ログ」と「ユーザーログ」はありません。各パッケージには、独自の概念とレイヤーを備えた少し独立した API が含まれている必要があります。
「開発者ログ」と呼ばれるものは、おそらくアプリケーションの「カーネル」のサブ部分であり、「ユーザー ログ」と呼ばれるものは「コマンド ライン」または「UI」部分です。
各パッケージは、独自のオブジェクト モデルとビジネス ルールを使用して個別に検討する必要があります。このユニバースでは、通常、ユースケースの基本的なステップを処理する最上位レイヤーに「パブリック」部分があります。また、機能を拡張するための「保護」部分と、内部ニーズのための「非公開」部分もあります。このレイヤーは、異なる * Java パッケージ* に階層的に格納できます。ロギングの実践は、おそらくこのレイヤー スキームに基づいている必要があります。
java.loggingやlog4jなどの API を使用することをお勧めします。これにより、パッケージ名ベースでログを記録できます。
INFOは基本的な高レベルのステップである必要があります。これは、パッケージの最上位レイヤーのpublicメソッドで何が起こるかを意味します。
DEBUGは、パフォーマンスに影響を与えないより細かい粒度にする必要があります。
TRACEは、パフォーマンスの問題を引き起こす可能性がある非常に詳細なログに使用する必要があります。trace() への呼び出しを常に if(level==TRACE) 内にラップすることを忘れないでください。これにより、メッセージを作成するという無駄なタスクを実行しないようになります...など.
例外を処理できた場合に警告します。
例外が処理されなかったが、メイン スレッドがシャットダウンされなかった場合のERR 。
プロセス全体を終了しなければならなかったときのFATAL 。
幸運を!
ルノー