logger.infoとlogger.debugの違い


回答:


30

これは、ロギング構成によって異なります。デフォルト値は、使用されているフレームワークによって異なります。後で構成設定をINFOからDEBUGに変更すると、アプリケーション全体を再コンパイルせずに、大量の(またはその逆の場合は少ない)行が出力されるようになります。

どちらを使用するかを考えると、結局、どのレベルで何を見たいかを考えることになります。Log4Jなどの他のレベルについては、API(http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html)を参照してください。


121

「log4jの簡単な紹介」という記事をご覧になることをお勧めします。ログレベルの簡単な説明が含まれており、実際にどのように使用できるかを示しています。ログレベルの基本的な考え方は、状況に応じてログに含まれる詳細を構成できるようにすることです。たとえば、問題のトラブルシューティングを行う場合は、ログを非常に詳細にする必要があります。本番環境では、警告とエラーのみを表示したい場合があります。

システムの各コンポーネントのログレベルは通常、構成ファイルのパラメーターを介して制御されるため、簡単に変更できます。コードには、さまざまなレベルのさまざまなロギングステートメントが含まれます。に応答するときはException、を呼び出すことができますLogger.error。任意の時点で変数の値を出力する場合は、を呼び出すことができますLogger.debug。プログラム内の構成可能なログレベルとログステートメントのこの組み合わせにより、アプリケーションがそのアクティビティをログに記録する方法を完全に制御できます。

少なくともlog4jの場合、ログレベルの順序は次のとおりです。

DEBUG < INFO < WARN < ERROR < FATAL

これは、ログレベルがどのように機能するかを示すその記事の短い例です。

   // get a logger instance named "com.foo"
   Logger logger = Logger.getLogger("com.foo");

   // Now set its level. Normally you do not need to set the
   // level of a logger programmatically. This is usually done
   // in configuration files.
   logger.setLevel(Level.INFO);

   Logger barlogger = Logger.getLogger("com.foo.Bar");

   // This request is enabled, because WARN >= INFO.
   logger.warn("Low fuel level.");

   // This request is disabled, because DEBUG < INFO.
   logger.debug("Starting search for nearest gas station.");

   // The logger instance barlogger, named "com.foo.Bar",
   // will inherit its level from the logger named
   // "com.foo" Thus, the following request is enabled
   // because INFO >= INFO.
   barlogger.info("Located nearest gas station.");

   // This request is disabled, because DEBUG < INFO.
   barlogger.debug("Exiting gas station search");

@momomoこの回答をチェックして、Traceログレベルを確認することをお勧めします。
RBT 2017

あなたの例If you want to print the value of a variable at any given point, you might call Logger.debugは、私がDebugTraceレベルの間で持っていた混乱を明らかにするのに役立ちました。ありがとうございました!
RBT 2017

13

考えられるすべてのレベルのセットについての説明です。

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

9

基本的には、ロガーの構成方法によって異なります。通常、開発中にデバッグ出力が書き出されますが、本番環境ではオフになります。または、特定の領域のデバッグ中に書き出すデバッグカテゴリを選択した可能性があります。

優先順位を変えることのポイントは、特定のコンポーネントの詳細レベルを適度にきめ細かく変更できるようにすることです。違いを確認するには、(コードではなく)ロギング構成を変更するだけで済みます。


2

これは非常に古い質問ですが、ここで私の理解がわからないので、2セントを追加します。

すべてのレベルは、ユーザーのタイプに対応/マップします。

  • デバッグ:開発者-手動デバッグ
  • トレース:自動ロギングとステップトレーサー-3レベルのサポート用
  • 情報:技術者/サポートレベル1/2
  • 警告:技術者/ユーザーエラー:自動アラート/サポートレベル1
  • クリティカル/致命的:セットアップによって異なります-ローカルIT

2
  1. INFOは、プログラムが期待どおりに機能している情報をログに記録するために使用されます。
  2. DEBUGは、プログラムが期待どおりに機能しない場合や例外が発生した場合の理由を見つけるために使用されます。それは開発者の利益になります。

0

logger.debugとlogger.infoの違いは何ですか?

これらは、すでに定義されているデフォルトレベルにすぎません。必要に応じて、独自のレベルを定義できます。これらのレベルの目的は、コードを変更せずに、1つ以上のレベルを有効/無効にすることです。

logger.debugが出力されるのはいつですか?

構成でデバッグ以上のレベルを有効にした場合。


0

これは、log4j構成ファイルで選択したレベルによって異なります。

<Loggers>
        <Root level="info">
        ...

レベルが「info」(デフォルト)の場合logger.debug(...)、コンソールには出力されません。ただし、レベルが「デバッグ」の場合は、デバッグされます。

コードの重要度レベルに応じて、次のレベルの中で最も正確なレベルを使用する必要があります。

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.