63

ログ レベル WARN、ERROR、および FATAL は非常に明確です。しかし、いつ何かが DEBUG で、いつ INFO ですか?

INFO レベルで面倒なほど冗長なプロジェクトをいくつか見てきましたが、DEBUG レベルを優先しすぎるコードも見てきました。どちらの場合も、有用な情報はノイズの中に隠されています。

ログレベルを決定する基準は何ですか?

4

6 に答える 6

123

厳格なルールはないと思います。log4j タイプのレベルを使用すると、私の「経験則」は次のようになります。

  • FATAL : アプリ (または少なくともスレッド) が恐ろしく死ぬところです。これは、なぜそれが起こっているのかを説明する情報です。
  • ERROR : アプリが行ってはならないこと。これはユーザー エラー (「無効な検索クエリ」) ではありません。それはアサーションの失敗、ネットワークの問題などであり、おそらく現在の操作を中止しようとしているものです
  • WARN : 操作を中断させるものではないが、関連するもの。DB プール内の接続数が少なくなったり、異常ではあるが予期された操作のタイムアウトが発生したりするなど。たとえば、grep、グループ化、カウントして、システムの状態に影響を与えているものを把握します
  • INFO : アプリの通常の操作の一部である通常のログ記録。戻って、「この広範なレベルの操作がどのくらいの頻度で発生したか?」または「ユーザーのデータがどのようにしてこの状態になったのか?」を確認できます。
  • DEBUG : デフォルトではオフですが、特定の予期しない問題をデバッグするためにオンにすることができます。これは、主要なメソッド パラメーターに関する詳細情報や、コードの特定の「問題のある」領域で起こりそうな問題を見つけるのに役立つその他の情報を記録する場所です。
  • TRACE : 「マジで、WTF がここで起こっている?!?! この @#$@ing メモリ破損バグを見つけて発狂する前に、実行するすべてのステートメントをログに記録する必要がある」

決まったものではありませんが、私がどのように考えているかについての大まかな考えです。

于 2008-10-09T11:33:40.483 に答える
8

非公式に、私はこの種のヒエラルキーを使用しています。

  • DEBUG - 実際のトレース値
  • 情報 - 何かが起こった - 重要なことはなく、ただのフラグ
  • 警告 - すべてが機能していますが、何かが期待どおりではありません
  • エラー - 修正が必要な問題が発生しましたが、続行して他の (独立した) アクティビティを実行できます
  • FATAL - 続行するべきではないほど深刻な問題

通常、INFO がログに記録された状態でリリースしますが、ログ ファイルが実際にレビューされていることがわかっている場合 (およびサイズが問題ではない場合) にのみ、それ以外の場合は WARN です。

于 2008-10-09T11:27:25.520 に答える
5

各レベルを誰が使用する必要があるかを考えてください。私のコードでは、DEBUGを開発者の出力用に予約しておきます。たとえば、開発者だけに役立つ出力です。 VERBOSEは、多くの情報が必要な場合に通常のユーザーに使用されます。 INFO通常、主要なイベントを表示するために使用します (たとえば、Web ページの送信、重要なもののチェックなど)。

そしてFAILWARNは一目瞭然です。

于 2008-10-09T11:22:16.917 に答える
4

私のチームの慣習はdebug、メッセージで何かが計算された場合に使用するのに対してinfo、プレーンテキストに使用されることです。事実上、info何が起こっているかdebugを示し、起こっていることの価値を示します。

于 2008-10-09T11:28:19.073 に答える
1

私は INFO をユーザーに向けて、警告でさえないメッセージを表示する傾向があります。DEBUG は開発者が使用する傾向があり、メッセージを出力してコード全体の流れを追跡するのに役立ちます (変数の値も含む)。

また、別のレベルの DEBUG (DEBUG2?) も気に入っています。これは、すべてのバッファーの 16 進ダンプなどのデバッグ情報の絶対バケットロードを提供します。

于 2008-10-09T12:02:55.963 に答える
0

DEBUG2レベルは必要ありません。それが「TRACE」の目的です。TRACEは、表示する可能性のあるすべての情報を出力する、絶対的な最低レベルのロギングを目的としています。

大量の情報を回避するために、プロジェクト全体でトレースレベルのログを有効にすることは一般的に推奨されていません。代わりに、「DEBUG」を使用してバグとその発生場所に関する一般的な情報(名前の由来)を確認し、それでも理解できない場合は、そのコンポーネントに対してのみTRACEを有効にします。

于 2012-01-10T19:11:12.807 に答える