web-dev-qa-db-ja.com

logger.infoとlogger.debugの違い

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

logger.debugはいつ印刷されますか?

68
Senthilnathan

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

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

24
toomasr

"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");
113
William Brendel

可能なすべてのレベルのセットについての明確な説明、つまり:

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

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

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

7
Jon Skeet

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

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

  • debug:開発者-手動デバッグ
  • trace:自動ロギングおよびステップトレーサー-第3レベルのサポート用
  • info:技術者/サポートレベル1/2
  • 警告:技術者/ユーザーエラー:自動アラート/サポートレベル1
  • 重要/致命的:セットアップに依存-ローカルIT
0

Log4j構成ファイルで選択したレベルによって異なります。

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

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

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

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
0
Jack'

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

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

logger.debugが出力されるとき??

構成でデバッグまたはそれ以上のレベルを有効にしたとき。

0
craftsman