web-dev-qa-db-ja.com

Java.util.logging.Loggerはログをどこに保存しますか

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

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

ログはどこで見ることができますか?また、Java.util.logging.Loggerライブラリからの次の引用:

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

これは、3つのrequest levelログがある場合、次のことを意味しますか?

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

そして、私のlog levelは重大であり、3つのログすべてを見ることができ、log levelが警告である場合、重大なログを見ることができません、それは正しいですか?そして、どのようにlog levelを設定しますか?

38
Thang Pham

ログはどこに表示されますか?

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

これは、3つのリクエストレベルのログがある場合...

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

コンソールにログインするには、上記のFileHandlerConsoleHandlerに置き換えます。

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

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

28
Péter Török

Java TM Logging Overview は、Java Logger

logging overview

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

ログレベル

各ログメッセージには、ログレベルが関連付けられています。レベルは、ログメッセージの重要性と緊急性に関する大まかなガイドを提供します。ログレベルオブジェクトは整数値をカプセル化し、値が大きいほど優先度が高いことを示します。

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

5
VonC

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

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

1
Andrew Hubbs