42

これはばかげた質問かもしれませんが、Java Logger について少し迷っています。

private static Logger logger = Logger.getLogger("order.web.OrderManager");
logger.info("Removed order " + id + ".");

ログはどこで見られますか? また、java.util.logging.Logger ライブラリからのこの引用:

各ロギング呼び出しで、Logger は最初に、ロガーの有効なログ レベルに対して要求レベル (SEVERE または FINE など) の安価なチェックを実行します。リクエスト レベルがログ レベルよりも低い場合、ロギング呼び出しはすぐに戻ります。
この最初の (簡単な) テストに合格すると、Logger は LogRecord を割り当ててログ メッセージを記述します。次に、フィルター (存在する場合) を呼び出して、レコードを公開する必要があるかどうかについてより詳細なチェックを行います。それが成功すると、LogRecord がその出力ハンドラに発行されます。

これは、request levelログが 3 つある場合:

logger.log(Level.FINE, "Something");
logger.log(Level.WARNING, "Something");
logger.log(Level.SEVERE, "Something");

log levelは SEVERE で、3 つのログすべてを表示できます。もし私log levelが WARNING の場合、SEVERE ログは表示されません。正しいですか? そして、どのように設定しlog levelますか?

4

3 に答える 3

28

ログはどこで見られますか?

実際のログ ハンドラーの構成に応じて、ログ ファイルまたは標準出力で。これは、プロパティ ファイルを介して、またはロギング API を介して直接設定できます。

これは、リクエスト レベルが 3 のログがある場合、ということですか...

SEVEREは最も重要 (優先度が最も高い) でありFINE、例に示されている 3 つのメッセージ タイプの中で最も重要度が低いです。したがって、ログ レベルがの場合、メッセージSEVEREのみがログに記録されます。SEVERElevel がFINEの場合、3 つのメッセージすべてがログに記録されます。

これは、実際の本番環境で、エラーと場合によっては警告のみをログに記録したい場合に非常に役立ちます (これらは - うまくいけば - かなりまれですが、それらについて知りたい場合です)。そのため、ログ レベルを に設定できますWARNING。ただし、開発環境では、問題をデバッグするときなどに、大量のログ データが作成されてアプリケーションの速度が低下しても、ログ内のすべての情報を確認する必要があります。したがって、ログ レベルをFINEまたはに設定しますFINEST

Java Loggingの良い入門書です。

更新:上記のページの単純な例で、ロガーがレベルでファイルにログを記録するように構成しますFINEST

Handler fh = new FileHandler("%t/wombat.log");
Logger.getLogger("").addHandler(fh);
Logger.getLogger("com.wombat").setLevel(Level.FINEST);

FileHandlerコンソールにログインするには、上記を次のように置き換えますConsoleHandler

Handler ch = new ConsoleHandler();
Logger.getLogger("").addHandler(ch);

ただし、これは単なる例です。実際のアプリでは、構成プロパティ ファイルを使用してログを構成することをお勧めします。

于 2010-06-11T19:55:32.290 に答える
5

Java TM Logging Overviewは、Java に関するすべての質問に答えるのに非常に興味深いものですLogger

ロギングの概要

Handlerに関連付けられたLoggerログが生成される場所にログが表示されます (ConsoleまたはStream...)。
デフォルトの構成では、コンソールに出力を送信するために、ルート ロガーに単一のハンドラーが確立されます。

ログレベル:

各ログ メッセージには、関連するログ レベルがあります。レベルは、ログ メッセージの重要性と緊急性を大まかに示します。ログ レベル オブジェクトは整数値をカプセル化し、値が大きいほど優先度が高くなります。

このクラスは、 (最低の優先度、最低の値) から(最高の優先度、最高の値Level)までの 7 つの標準ログ レベルを定義します。FINESTSEVERE

于 2010-06-11T19:58:47.353 に答える
1

どこに行くかは、構成によって異なります。これについての詳細はAPIドキュメントにあります。ログレベルは、あなたが言ったことの正反対です。の構成がある場合はFINE、すべてFINE, WARNING, SEVEREが表示されますが、に設定されている場合は、SEVEREそれらのみが表示されます。

一般に、デバッグ中に使用し、実稼働環境にあるときにFINE切り替える必要があります。SEVERE

于 2010-06-11T20:00:39.543 に答える