Java でロガーを使用する
Java プログラミング言語では、ロギング
は、ユーザーが特定のクラスから生成されたエラーを追跡できるようにする API です。ロガーは、タイムスタンプとそれが入力されるエンドポイントを追加することにより、リアルタイムのロギングメカニズムを支援します。API は、イベントの追跡をログの logger
として維持するのに役立ちます。レコードは、発生した問題の根本原因を特定し、後で同じイベントを再生成するのに役立ちます。
この記事では、Java ログをより有効に活用する方法を紹介します。
Java でのロガーの機能
ロガーとその機能は、以下のプログラムで示されています。
package log_file;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
public class AddLoggerInFile {
public static void main(String[] args) {
Logger logger = Logger.getLogger("MyLog");
FileHandler fileHandler;
try {
fileHandler = new FileHandler("src/main/resources/MyLogFile.txt");
logger.addHandler(fileHandler);
SimpleFormatter simpleFormatter = new SimpleFormatter();
fileHandler.setFormatter(simpleFormatter);
logger.info("Log to test");
} catch (SecurityException e) {
logger.info("Exception:" + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
logger.info("IO Exception:" + e.getMessage());
e.printStackTrace();
}
logger.info("Hi In the main class");
}
}
上記のコードブロックでは、ロガーが最初にインスタンス化されます。
このクラスは、java.util.logging
パッケージに含まれています。getLogger
は、Logger
クラスに存在する静的メソッドであり、指定された名前でシステムに存在しない場合にロガーを作成します。関数 else
は、既存のロガーインスタンスがすでに存在する場合、それを返します。
指定された名前が null 値の場合、関数は NullPointerException
をスローします。ロガーインスタンスがインスタンス化されると、ファイルハンドラインスタンスが作成されます。
FileHandler
クラスは java.util.logging
パッケージに含まれており、logger
インスタンスを使用して出力されたログを処理するように特別に設計および構成されています。コンストラクターFileHandler
は、ハンドラーを初期化して、指定されたファイル名に情報を書き込みます。コンストラクターは、出力ファイルの名前をパラメーターとして受け取ります。
上記のコードでは、相対パスにファイル名が指定されています。サイズは、ログが入る制限まで拡張される可能性があるため、ファイルで定義されていません。コンパイラーがファイルを開く際に問題が発生すると、コンストラクターは IOException
をスローします。セキュリティマネージャに LoggingPermission
がない場合は SecurityException
をスローし、パターンが空の文字列の場合は IllegalArgumentException
をスローします。
addHandler
メソッドは、ファイルハンドラーをマップして、ログメッセージをファイルに受信します。この関数は値を返さないため、void
戻り型です。代わりに、ログとイベントのみを消費します。セキュリティマネージャに十分なログ権限がない場合は、SecurityException
がスローされます。
SimpleFormatter
インスタンスが開始されます。このクラスは、java.util.logging
パッケージにも含まれています。フォーマッターは、logging.SimpleFormatter.format
プロパティを使用してログを自動フォーマットする特権を許可します。このプロパティにより、ログメッセージを定義された形式にすることができるため、均一性が維持されます。
setFormatter
は、ロガーインスタンスにフォーマッターを設定する関数です。info
は、Logger
クラスに存在する関数で、INFO
ログメッセージをファイルに出力します。Level クラスにはさまざまなログレベル
が存在する可能性があります。用途に応じて、INFO
、DEBUG
、FINE
、CONFIG
、および SEVERE
ログを使用できます。
ログレベル
は、プログラムログの重大度を定義するログの詳細です。レベルには、いくつかの定義された数と指定された意味があります。たとえば、SEVERE
のログ値は 1000
であり、システムの障害を示しているため、すぐに対処する必要があります。
重大度は、一部のネットワーク障害またはデータベース接続が失われたときに発生します。同様に、警告
レベルは 900
の値を保持し、システムの潜在的なリスクを示します。
以下は、標準のコンソール出力と MyLogFile.txt
ファイルに入力される出力です。
出力:
Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Log to test
Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Hi In the main class
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn