Javaのロガーとは何ですか?なぜそれを使用するのですか?



Javaのロガーに関するこの記事は、プロジェクトの作成中にソリューションをロギングするために使用されるJavaロギングAPIに関する包括的なガイドです。

ロギングは重要な機能であり、開発者はエラーを追跡するために考慮する必要があります。 は、最も人気のあるプログラミング言語の1つであり、基本的なロギングAPIを提供することにより、ロギングへのカスタマイズ可能なアプローチが付属しています。したがって、Javaのロガーに関するこの記事では、その方法について説明します。 この機能を使用して、Javaで拡張可能なロギングを有効にすることができます。

この記事では、次のトピックについて説明します。





    1. ロギングの必要性
    2. ロギングコンポーネント
    3. ロガーとは何ですか?
    4. アペンダーまたはハンドラー
    5. レイアウトまたはフォーマッター

前に、Javaでのロギングについて深く掘り下げ、ロギングの必要性を理解しましょう。

ロギングの必要性

アプリケーションを構築しているときに、デバッグが必要なエラーに直面することがよくあります。したがって、ログの助けを借りて、エラーや異常な状況の記録とともに、アプリケーションで何が起こっているかについての情報を簡単に取得できます。さて、でSystem.out.print()ステートメントを使用してみませんか。 。これらのステートメントの問題は、ログメッセージがコンソールにのみ出力されることです。したがって、コンソールを閉じると、自動的にすべてのログが失われます。したがって、ログはシングルスレッド環境であるため、永続的に保存されることはなく、1つずつ表示されます。



このような問題を回避するために、Javaへのログインはを通じて提供されるAPIjava.util.loggingパッケージ、およびorg.apache.log4j。*パッケージ。

ロギングコンポーネント

Javaロギングコンポーネントは、開発者がログを作成し、ログをそれぞれの宛先に渡し、適切な形式を維持するのに役立ちます。以下は3つのコンポーネントです。

  • ロガー –ログレコードをキャプチャし、対応するアペンダーに渡す責任があります。
  • アペンダーまたはハンドラー –宛先へのログイベントの記録を担当します。アペンダーは、出力を送信する前に、レイアウトを使用してイベントをフォーマットします。
  • レイアウトまたはフォーマッタ –ログエントリに表示されたときにデータがどのように表示されるかを決定する責任があります。

3つのコンポーネントすべての動作については、以下の画像を参照してください。



ロギングコンポーネント-Javaのロガー-Edureka

アプリケーションがロギング呼び出しを行うと、LoggerコンポーネントはイベントをLogRecordに記録し、適切なAppenderに転送します。次に、必要な形式に従ってレイアウトを使用してレコードをフォーマットしました。これとは別に、複数のフィルターを使用して、イベントに使用するアペンダーを指定することもできます。

ここで、Javaのロガーとは何かを詳しく理解しましょう。

Javaのロガーとは何ですか?

Javaのロガーは、ログイベントをトリガーするオブジェクトです。これらは、アプリケーションのコードで作成および呼び出され、ログイベントを生成してから、次のコンポーネントであるAppenderに渡します。 1つのクラスで複数のロガーを使用して、さまざまなイベントに応答したり、階層でロガーを使用したりできます。これらは通常、階層的なドット区切りの名前空間を使用して名前が付けられます。また、すべてのロガー名は、ログに記録されたコンポーネントのクラス名またはパッケージ名に基づいている必要があります。

これとは別に、各ロガーは、最も近い既存の祖先を追跡します。 ログ 名前空間であり、「レベル」も関連付けられています。さて、この記事の後半でロガーについて説明しますが、その前に、Javaでロガーを作成する方法を紹介します。

新しいロガーを作成する

Javaで新しいロガーを作成するプロセスは非常に簡単です。あなたは使用する必要がありますLogger.getLogger()方法。ザ・getLogger() ロガーの名前を識別し、パラメーターとして文字列を取ります。したがって、ロガーがすでに存在する場合は、そのロガーが返されます。それ以外の場合は、新しいロガーが作成されます。

構文:

static Logger logger = Logger.getLogger(SampleClass.class.getName())

ここで、SampleClassは、Loggerオブジェクトを取得するクラス名です。

例:

public class Customer {private static final Logger LOGGER = Logger.getLogger(Customer.class)public void getCustomerDetails(){}}

Javaでロガーを作成する方法を説明したので、ロギングで使用できるさまざまなレベルを見てみましょう。

ログレベル

ログレベルは、ログを重大度またはアプリケーションの安定性への影響によって分類するために使用されます。ザ・org.apache.log4j。*パッケージとjava.util.loggingどちらも異なるレベルのロギングを提供します。それぞれを一つずつ見ていきましょう。

org.apache.log4j。*パッケージは、次のレベルを降順で提供します。

  • 致命的
  • エラー
  • 警告
  • 情報
  • デバッグ

java.util.loggingパッケージは、次のレベルを降順で提供します。

  • 重度(最高レベル)
  • 警告
  • 情報
  • CONFIG
  • FINE
  • FINER
  • 最高(最低レベル)

これとは別に、上記のパッケージは2つの追加レベルも提供しますすべてそしてオフすべてのメッセージのログ記録とログ記録の無効化にそれぞれ使用されます。

を使用してJavaにログインする例org.apache.log4j。*パッケージ:

import org.apache.log4j.Logger public class Customer {static Logger logger = Logger.getLogger(Customer.class)public static void main(String [] args){logger.error( 'ERROR')logger.warn( 'WARNING' )logger.fatal( 'FATAL')logger.debug( 'DEBUG')logger.info( 'INFO')System.out.println( 'Final Output')}}

したがって、出力が私たちのWARNレベルとしてのルートロガー log4j.properties ファイルの場合、WARNよりも優先度の高いすべてのエラーメッセージが次のように出力されます。

からsetLevel()メソッドを使用してレベルを設定することもできます。java.util.logging以下のパッケージ:

logger.setLevel(Level.WARNING)

を使用してJavaにログインする例java.util.loggingパッケージ:

パッケージedurekaimport java.io.IOException import java.util.logging.Level import java.util.logging.Logger importjava.util.logging。* class EdurekaLogger {private final static Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)public void sampleLog(){LOGGER.log(Level.WARNING、 'Welcome to Edureka!')}} public class Customer {public static void main(String [] args){EdurekaLogger obj = new EdurekaLogger()obj.sampleLog()LogManager slg = LogManager.getLogManager()Logger log = slg.getLogger(Logger.GLOBAL_LOGGER_NAME)log.log(Level.WARNING、 'こんにちは!Edurekaからようこそ')}}

を使用してアプリケーションへのログインを有効にするにはorg.apache.log4j。*パッケージまたはjava.util.loggingパッケージの場合、プロパティファイルを構成する必要があります。次に、Javaのロガーに関するこの記事で、両方のプロパティファイルについて説明します。

Log4jおよびJavaUtilパッケージのプロパティファイル

Log4jプロパティファイルのサンプル:

#ルートロガーオプションlog4j.rootLogger = INFO、file、stdoutを有効にします#印刷ファイルにアペンダーを添付しますlog4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = E:loglogging.loglog4j.appender。 file.MaxFileSize = 10MB log4j.appender.file.MaxBackupIndex = 5 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =%d {yyyy-MM-dd HH:mm :ss}%-5p%c {1}:%L-%m%n#コンソールに印刷するアペンダーを添付log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =%d {yyyy-MM-dd HH:mm:ss}%-5p%c {1}:%L -%m%n
  • Log4jプロパティファイルは、プロジェクトのsrcフォルダー内に作成されます。
  • log4j.appender.file = org.apache.log4j.RollingFileAppender->すべてのログをファイルに出力します
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender->コンソールにすべてのログを出力します
  • log4j.appender.file.File = D:loglogging.log->ログファイルの場所を指定します
  • log4j.appender.file.MaxFileSize = 10MB->ログファイルの最大サイズを10MBにする
  • log4j.appender.file.MaxBackupIndex = 5->バックアップファイルの数を5に制限します
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout->ログがログファイルに出力されるパターンを指定します。
  • log4j.appender.file.layout.ConversionPattern =%d {yyyy-MM-dd HH:mm:ss}%-5p%c {1}:%L –%m%n->デフォルトの変換パターンを設定します。

サンプル JavaUtilパッケージプロパティファイル

handlers = java.util.logging.ConsoleHandler .level = WARNING#出力はデフォルトディレクトリに保存されますjava.util.logging.FileHandler.pattern =%h / java%u.log java.util.logging.FileHandler.limit = 60000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter#ログのレベルはWARNING以上に制限されます。 java.util.logging.ConsoleHandler.level =警告java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

ここに、

  • java.util.logging.FileHandler.pattern =%h / java%u.log->ログファイルはに書き込まれますC:TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50000->ロガーが任意の1つのファイルに書き込む最大量(バイト単位)。
  • java.util.logging.FileHandler.count = 1->出力ファイルの数を指定します
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter->フォーマットに使用されるフォーマッターに言及します。ここでは、XMLフォーマッタが使用されています。
  • java.util.logging.ConsoleHandler.level = WARNING->デフォルトのログレベルをWARNINGに設定します
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter->を指定しますフォーマッターすべての人が使用するConsoleHandlerの。ここでは、SimpleFormatterが使用されています。

イベントのログ

イベントを記録するには 、イベントを簡単にファイリングできるようにレベルを割り当てる必要があります。レベルを割り当ててメッセージに言及するには、以下の方法を使用できます。

方法1:

logger.log(Level.INFO、“メッセージの表示”)
ここで、レベルはINFOで、出力されるメッセージは「メッセージの表示」です。

方法2:

logger.info( 'メッセージの表示')

JavaのロガーがINFOレベル以上のイベントのみをログに記録するようにするには、 setLevel() 上記の方法。

文字列からjavautildateへ

ここで、JavaでLoggerを使用する方法について説明したので、Log4jアーキテクチャの次のコンポーネントであるAppenderについて説明します。

アペンダーまたはハンドラー

アペンダーまたはハンドラーは、ログイベントを宛先に記録する責任があります。各ロガーは複数のハンドラーにアクセスでき、ロガーからログメッセージを受信します。次に、アペンダーはフォーマッターまたはレイアウトを使用してイベントをフォーマットし、対応する宛先に送信します。

Appenderは、setLevel(Level.OFF)メソッドを使用してオフにできます。の2つの最も標準的なハンドラーjava.util.loggingパッケージは次のとおりです。

  • FileHandler: ログメッセージをファイルに書き込みます
  • ConsoleHandler: ログメッセージをコンソールに書き込みます

理解を深めるために、プロパティセクションでいくつかのアペンダーについて説明しました。

レイアウトまたはフォーマッター

フォーマッターのレイアウトは、ログイベントのデータをフォーマットおよび変換するために使用されます。ロギングフレームワークは、HTML、XML、Syslog、JSON、プレーンテキストおよびその他のログのレイアウトを提供します。

  1. SimpleFormatter :基本情報を含むテキストメッセージを生成します。
  2. XMLFormatter :ログのXMLメッセージを生成します

理解を深めるために、プロパティセクションでいくつかのレイアウトについて説明しました。これで、「Javaのロガー」に関するこのブログの終わりになります。この記事であなたに教えられたことを皆さんが明確に理解していることを願っています。

チェックしてください 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Java開発者になりたい学生および専門家向けに設計されています。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやSpringなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。

質問がありますか?この「LoggerinJava」ブログのコメントセクションでそのことを伝えてください。できるだけ早くご連絡いたします。