工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java ロギング

Java ロギング

このチュートリアルでは、Java Logging とそのさまざまなコンポーネントについて、例を使って学習します。

Java を使用すると、ロギングのプロセスを通じてログ メッセージとファイルを作成およびキャプチャできます。

Java では、ロギングにはフレームワークと API が必要です。 Java には java.util.logging に組み込みのロギング フレームワークがあります。 パッケージ。

また、Log4j、Logback などのサードパーティ フレームワークをログの目的で使用することもできます。


Java ロギング コンポーネント

次の図は、コア コンポーネントと Java Logging API の制御の流れを表しています (java.util.logging ).

<図>

1.ロガー

Logger クラスは、ロギングのためのメソッドを提供します。 Logger からオブジェクトをインスタンス化できます

例を見てみましょう。

Logger logger = Logger.getLogger("newLoggerName");

getLogger() Logger のメソッド クラスは、新しい Logger を検索または作成するために使用されます .文字列引数は、ロガーの名前を定義します。

ここでは、これにより新しい Logger が作成されます オブジェクトまたは既存の Logger を返します

Logger を定義するのが慣習です class.getName() を使用して現在のクラスの後に .

Logger logger = Logger.getLogger(MyClass.class.getName());

注: このメソッドは NullPointerException をスローします 渡された名前が null の場合 .

Logger ログメッセージの重要度を決定するレベルがあります。 7 つの基本的なログ レベルがあります:

ログレベル (降順) 使用
重度 重大な失敗
警告 警告メッセージ、潜在的な問題
情報 一般的なランタイム情報
構成 構成情報
良い 一般的な開発者情報 (トレース メッセージ)
さらに細かく 詳細な開発者情報 (トレース メッセージ)
最高 非常に詳細な開​​発者情報 (トレース メッセージ)
オフ すべてのレベルのログをオフにする (何もキャプチャしない)
すべて すべてのレベルのログを有効にする (すべてをキャプチャ)

各ログ レベルには、2 つの特別なログ レベル OFF を除いて、重大度を決定する整数値があります。 と ALL .


メッセージのログ

デフォルトでは、上位 3 つのログ レベルが常にログに記録されます。別のレベルを設定するには、次のコードを使用できます:

logger.setLevel(Level.LogLevel);

// example
logger.setLevel(Level.FINE);

この例では、レベル FINE のみ それ以上のレベルはログに記録されるように設定されています。他のすべてのログ メッセージは破棄されます。

メッセージをログに記録するには、 log() を使用します メソッド。

logger.log(Level.LogLevel, "log message");

// example
logger.log(Level.INFO, "This is INFO log level message");

必要なレベルでログを記録する簡単な方法があります。

logger.info( "This is INFO log level message");
logger.warning( "This is WARNING log level message");

設定されたログ レベルを通過したすべてのログ リクエストは、LogRecord に転送されます .

注: ロガーのレベルが null に設定されている場合 、そのレベルは親から継承され、ツリーを上っていきます。


2.フィルター

フィルタ (存在する場合) は、LogRecord 転送する必要があるかどうか。名前が示すように、特定の基準に従ってログ メッセージをフィルタリングします。

LogRecord 指定された基準に合格した場合にのみ、ロガーからログ ハンドラーに渡され、ログ ハンドラーから外部システムに渡されます。

// set a filter
logger.setFilter(filter);

// get a filter
Filter filter = logger.getFilter();

3.ハンドラー (アペンダー)

ログ ハンドラーまたはアペンダーが LogRecord を受け取ります さまざまなターゲットにエクスポートします。

Java SE は 5 つの組み込みハンドラーを提供します:

ハンドラー 使用
StreamHandler OutputStream に書き込みます
ConsoleHandler コンソールへの書き込み
FileHandler ファイルへの書き込み
SocketHandler リモート TCP ポートへの書き込み
MemoryHandler メモリへの書き込み

ハンドラは LogRecord を渡すことができます 外部システムに転送できるかどうかを再度判断するためにフィルターに送信します。

新しいハンドラーを追加するには、次のコードを使用します:

logger.addHandler(handler);

// example
Handler handler = new ConsoleHandler();
logger.addHandler(handler);

ハンドラーを削除するには、次のコードを使用します:

logger.removeHandler(handler);

// example
Handler handler = new ConsoleHandler();
logger.addHandler(handler);
logger.removeHandler(handler);

ロガーは複数のハンドラーを持つことができます。すべてのハンドラーを取得するには、次のコードを使用します:

Handler[] handlers = logger.getHandlers();

4.フォーマッター

ハンドラーは フォーマッター も使用できます LogRecord をフォーマットします オブジェクトを外部システムにエクスポートする前に文字列に変換します。

Java SE には 2 つの組み込み フォーマッタ があります :

フォーマッター 使用
SimpleFormatter フォーマット LogRecord 文字列へ
XMLFormatter フォーマット LogRecord XML形式へ

次のコードを使用してハンドラをフォーマットできます:

// formats to string form
handler.setFormatter(new SimpleFormatter());

// formats to XML form
handler.setFormatter(new XMLFormatter());

ログマネージャー

ログマネージャー オブジェクトは、グローバル ログ情報を追跡します。ログ構成とロガー インスタンスを読み取り、維持します。

ログ マネージャーはシングルトンです。つまり、そのインスタンスは 1 つだけインスタンス化されます。

ログ マネージャー インスタンスを取得するには、次のコードを使用します:

LogManager manager = new LogManager();

ロギングの利点

Java でログインする利点のいくつかを次に示します。


Java

  1. Java オペレーター
  2. Java コメント
  3. Java for-each ループ
  4. Java 文字列
  5. Java インターフェイス
  6. Java匿名クラス
  7. Java try-with-resources
  8. Java アノテーション
  9. Java アサーション
  10. Java ベクトル
  11. Java でのログイン:考慮すべき重要なヒント