ホームページ  >  記事  >  Java  >  Log4jの基本的な使い方の紹介

Log4jの基本的な使い方の紹介

零下一度
零下一度オリジナル
2017-06-28 14:40:111943ブラウズ

簡単な設定

#指定logger
# 配置Logger组件 
# 设定Log4j的日志级别(error warn info  debug)
# 输出目的地(Console, logfile是appender的名字,是自己定义的,后面才赋予具体的含义)
log4j.rootLogger=debug, Console, logfile
###################################################################################################################
#指定appender(目的地)
#设定Logger的Console(appender的名字)的Appender类型为控制台输出
#org.apache.log4j.ConsoleAppender 表明 Console是控制台输出
log4j.appender.Console=org.apache.log4j.ConsoleAppender

#输出的格式
#设定Console的Appender布局Layout
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式)包含选项:
#                     ConversionPattern=%m%n :指定怎样格式化指定的消息
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.Console.layout.ConversionPattern=%d %p %c.%M() - %m%n

###################################################################################################################
#设定Logger的logfile(appender的名字)的Appender类型为文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.logfile=org.apache.log4j.RollingFileAppender

#设定文件的输出路径(指定文件的名字和路径,tomcat的启动路径)
log4j.appender.logfile.File=../logs/logstrore.log

#设定后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logstrore.log.1文件
log4j.appender.logfile.MaxFileSize=2048KB

#Keep three backup files.指定可以产生的滚动文件的最大数
log4j.appender.logfile.MaxBackupIndex=4#设定logfile的Appender布局Layout
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p %c.%M() - %m%n
###################################################################################################################

Log4Jはじめに

Log4Jを利用することで、ログ情報の用途を指定できるログ操作パッケージです。コンソール、ファイル、CUI コンポーネント、NT イベント レコーダなどの出力場所で、各ログの出力形式を制御することもできます。さらに、ログ情報のレベルを定義することで、ログの出力を詳細に制御できるのは、アプリケーションのコードを変更することなく、設定ファイルを通じてこれらの機能を柔軟に設定できることです。

アプリケーションでのログの出力には 3 つの目的があります:

l コード内の変数の変更を監視し、他のアプリケーションによる統計分析のためにデータを定期的にファイルに記録します

l 将来の使用のための参照としてコードの実行時の軌跡を追跡しますfor Audit

l 統合開発環境でデバッガとして機能し、コードのデバッグ情報をファイルやコンソールに出力します

プログラムにログを出力するには、コードにステートメントを埋め込むのが最も一般的な方法です。ログはコンソールまたはファイルに出力できます。コード本体に一連の print ステートメントを埋め込むのではなく、ログ操作クラスを構築してそのような操作をカプセル化する方が良い方法です。

現在、Apache は再利用可能なコンポーネントに重点を置き、再利用可能なログ操作クラス名を最初から開発することに加えて、強力な既製のログ操作パッケージ Log4J を提供しています。

Log4J は主に 3 つの主要コンポーネントで構成されます:

l ロガー: ログを生成し、ログ情報を分類およびフィルタリングできるようにします。平たく言えば、どのようなログ情報を出力するか、どのようなログ情報にするかを決定します。無視されます

l アペンダー: ログ情報の出力先を定義し、ログ情報が出力される場所を指定します。これらの場所には、コンソール、ファイル、ネットワークデバイスなどが含まれます。

l レイアウト: ログ情報の出力形式を指定します

これら 3 つのコンポーネントが連携することで、開発者はログ情報のカテゴリに応じて情報を記録し、プログラム実行中にログ情報の出力形式とログの保存場所を制御できます。

Logger は複数の Appender を持つことができます。つまり、各 Appender はレイアウトに対応し、出力されるログ情報の形式を決定します。

実際のニーズに応じて、プログラム内のログ情報をプログラムが実行されているコンソールに出力する必要があり、コンソールにログ情報を出力する場合は、SimplLayout レイアウトで指定したファイルに出力する必要があるとします。ログ情報は PatternLayout にファイルが出力されます。 このとき、Logger、Appender、Layout の 3 つのコンポーネントの関係は図のようになります。目的)

Log4J の Appender コンポーネントは、ログ情報を出力する場所を決定します。最近、Log4Jは以下の目的へのログ情報の出力をサポートしました:

l Console

l

File
l

GUIコンポーネント

ロガーは同時に複数のAppenderに対応できる、つまり、たとえば、rootLogger に 2 つのアペンダーを設定する場合、1 つはファイル、もう 1 つはコンソールに、次の設定コードを使用できます。

log4j.rootLogger =WARN,file,console rootLogger ログレベルと出力目的を設定します。

log4j.appender.file=org.apache.log4jRollingFileAppender

Log4j.appender.file=log.txtlog4j.appender.console=org.apache.log4j.ConsoleAppender

Layout コンポーネント
Layout コンポーネントは、ログの出力形式を決定するために使用されます。

l org.apache.log4j.HTMLLayout (HTML テーブル形式のレイアウト)

l org.apache. log4j.PatternLayout (レイアウト モードを柔軟に指定できます)

l org.apache.log4j.SimpleLayout (ログ情報レベルと情報文字列が含まれます)

l org.apache.log4j.TTCCLayout (ログの生成時間、スレッド、カテゴリが含まれます)など情報)

Log4jの基本的な使い方

アプリケーションでLog4Jを利用するには、まず設定ファイルでLog4jの各種コンポーネントを設定し、プログラム内のLog4JAPIを通じてログを操作することができます

設定ファイルを定義します
Log4J は、Logger、Appender、レイアウトという 3 つの重要なコンポーネントで構成されています。 Log4J は、プログラム内でこれらのコンポーネントをプログラム的に設定することをサポートしています。また、後者の方法の方が柔軟です。

Log4J は 2 つの構成ファイル形式をサポートします。1 つは XML 形式で、もう 1 つは Java プロパティ ファイル


1 です。 Logger コンポーネントを構成します。ルートロガー = [ レベル ] 、appenderName1、appenderName2、…

例:

Log4j.rootLogger =WARN,file,console

レベル: ログの優先度であり、OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL、または定義したレベルに分けられます。

Log4j では、高から低まで、ERROR>WARN>INFO>DEBUG の 4 つのレベルのみを使用することをお勧めします。ここで定義したレベルを通じて、アプリケーション内の対応するレベルへのログ情報の切り替えを制御できます。たとえば、こちらから予約してください INFO レベルが定義されている場合、アプリケーション内のすべての DEBUG レベルのログ情報は出力されません。


appenderName: ログ情報の出力先を指定します。同時に複数の出力先を指定できます。

すべて: すべてのログを印刷します。

オフ: すべてのログを閉じます。

例: log4j.rootLogger=info,A1,B2,C3


2.

設定

アペンダー

コンポーネント

構文は次のとおりです。 log4j.appender.appenderName = fully.qualified.name.of.appender.class.


例:

log4j.appender.console=org.apache.log4j.ConsoleAppender

" fully.qualified.name.of. appender.class"

次の 5 つの宛先のいずれかを指定できます

:
。 2.org.apache.log4j.FileAppender
(ファイル)
【ログは1つのファイルにしか出力できないため非推奨】 3.org.apache.log4j.DailyRollingFileAppender(毎日ログファイルを生成します)
4.org.apache.log4j.RollingFileAppender (ファイルサイズが指定したサイズに達したら新しいファイルを生成します)
5.org.apache.log4j.WriterAppender (ログ情報をストリーミング形式で任意の場所に送信)
A.
ConsoleAppender
option Threshold=WARN: ログメッセージを指定 最低出力のレベル。 ImmediateFlush=true: デフォルト値は true で、すべてのメッセージがすぐに出力されることを意味します。

Target=System.err: デフォルト: System.out、出力コンソールを指定します

B.

FileAppender

OptionThreshold=WARN: ログメッセージの出力の最低レベルを指定します。

ImmediateFlush=true: デフォルト値は true で、すべてのメッセージがすぐに出力されることを意味します。

File=mylog.txt: mylog.txt ファイルに出力するメッセージを指定します。
Append=false: デフォルト値は true で、メッセージが指定されたファイルに追加されることを意味し、false はメッセージが

で指定されたファイルの内容を上書きすることを意味します。
C.DailyRollingFileAppenderOptions
Threshold=WARN: ログ メッセージの出力の最低レベルを指定します。
ImmediateFlush=true: デフォルト値は true で、すべてのメッセージがすぐに出力されることを意味します。
File=mylog.txt: mylog.txt ファイルに出力するメッセージを指定します。
Append=false: デフォルト値は true で、メッセージが指定されたファイルに追加されることを意味し、false はメッセージが指定された

ファイルの内容を上書きすることを意味します。
DatePattern='.'yyyy-ww: ファイルを週に 1 回ロールします。つまり、毎週新しいファイルを生成します。もちろん、月、週、日、時間、分を指定することもできます。つまり、対応する形式は次のとおりです:

1)'.'yyyy-MM: 毎月

2)'.'yyyy-ww: 毎週
3)'.'yyyy-MM-dd: 毎日
4)'.'yyyy-MM-dd-a: 1 日 2 回
5)'.'yyyy-MM-dd-HH: 1 時間ごと
6) '。' yyyy-mm-dd-hh-mm:毎分

d.d.rollingfileappender
options= warn:ログメッセージの最低レベルの出力を指定します。 ImmediateFlush=true: デフォルト値は true で、すべてのメッセージがすぐに出力されることを意味します。 File=mylog.log: mylog.txt ファイルに出力するメッセージを指定します。 Append=false: デフォルト値は true で、メッセージが指定されたファイルに追加されることを意味し、false はメッセージが指定された
ファイルの内容を上書きすることを意味します。
MaxFileSize=100KB: 接尾辞は KB、MB、または GB です。ログ ファイルがこのサイズに達すると、自動的にスクロールされます。つまり、元のコンテンツが mylog.log.1 ファイルに移動されます。
MaxBackupIndex=2: 生成できるローリング ファイルの最大数を指定します。

3


、ログ情報の形式を構成する


構文は次のとおりです。 .qualified.name.of.layout.class"

次の 4 形式のいずれかを指定できます:


例: log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d %p %c.%M()-%m%n
1.org.apache.log4j.HTMLLayout (HTML テーブル形式のレイアウト) には次のオプションが含まれます: LocationInfo=true: デフォルト値は false、出力 Java ファイル名と行番号 Title=my app file: デフォルト値は Log4J Log Messages です 2.org.apache.log4j.PatternLayout (レイアウト パターンを柔軟に指定できます) には次のオプションが含まれます:

変換パターン=%m%n :指定されたメッセージのフォーマット方法を指定します。

3.org.apache.log4j.SimpleLayout (ログ情報のレベルと情報文字列が含まれます)
4.org.apache.log4j.TTCCLayout (ログ生成時間、スレッド、カテゴリなどの情報を含む)
2)log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
ログ情報形式のいくつかの記号の意味:
-X 番号: X 情報は出力時に左揃えで表示されます。
%p: 出力されるログ情報の優先順位、つまり DEBUG、INFO、WARN、ERROR、FATAL、
%d: 出力ログ時点の日付または時刻。デフォルトの形式は ISO8601 です。たとえば、%d{yyy MMM dd HH:mm:ss,SSS} のように、後で形式を指定することもできます。出力は次のようになります: October 18 、2002 22: 10:28,921
%r: アプリケーションの起動からログ情報が出力されるまでにかかった時間をミリ秒で出力します。 %c: 出力されたログ情報が属するカテゴリ。通常はクラスの完全名が出力されます。ログ イベントを生成したスレッド。%l: イベントが発生した場所は、カテゴリ名と発生したスレッドを含む %C.%M (%F:%L) の組み合わせに相当します。 。 そしてコードの行数。例: Testlog4.main(TestLog4.java:10) %x: 現在のスレッドに関連付けられた NDC (ネストされた診断環境) を出力します。特に Java サーブレットのようなマルチクライアントおよびマルチスレッド アプリケーションで使用されます。
%%: 「%」文字を出力します
%F: ログメッセージが生成されるファイルの名前を出力します
%L: コード内の行番号を出力します
%m: コードで指定されたメッセージを出力します生成される特定のログ情報
%n: キャリッジ リターンとライン フィード文字を出力します。Windows プラットフォームの場合は「rn」、Unix プラットフォームの場合は「n」が出力ログ情報のライン フィード

%M はメソッドの名前を表します
修飾子を追加します最小幅、最大幅、テキストの配置を制御します。例:

1)%20c: カテゴリ名が 20 未満の場合、最小幅は 20 です。
2)%-20c: 出力カテゴリの名前を指定します。最小幅は 20 です。カテゴリの名前が 20 未満の場合、「-」記号は左揃えを指定します。 3)%.30c: 出力カテゴリ名を指定します。最大幅は 30 です。カテゴリ名が 30 より大きい場合、左側の余分な文字は切り捨てられますが、30 より小さい場合は、左側の余分な文字が切り取られます。スペースはありません。 4)%20.30c: カテゴリ名が 20 文字未満の場合はスペースを埋め、名前が 30 文字を超える場合は左から切り詰めます。 プログラムで Log4J にアクセスするには、Log4J JAR ファイルを使用する必要があります。 プログラムで Log4J を使用するには、次のプロセスが含まれます: l ロガーを取得する l 設定ファイルを読み取り、Log4J 環境を設定する
l ログ情報を出力する



Log4J の学習に入る前に、一般的なことを理解するには、ログ パッケージには LogFactory と Log という 2 つの共通インターフェイスがあります。その使用法を以下に紹介します。

ログ インターフェイス

ユニバーサル ログ パッケージは、ログ メッセージを 6 つのレベルに分割します: FATAL (致命的)、ERROR (エラー)、WARN (警告)、INFO (情報)、DEBUG (デバッグ)、および TRACE (詳細)。このうち、FATAL が最もレベルが高く、TRACE が最も低いレベルです。一般的なログ パッケージは、ログ レベルのメカニズムを使用して、出力ログの内容を柔軟に制御します。

org.apache.commons.logging.Log インターフェースは、ログを出力するための一連のメソッドを提供するロガーを表します。

l Fatal(Object message): FATAL レベルのログ メッセージを出力します。

l error(Object message): ERRORレベルのログメッセージを出力します。

l……

l トレース(オブジェクト メッセージ): TRACE レベルのログ メッセージを出力します。

上記のログ出力方法では、出力するログのレベルがログに設定されたログレベル以上の場合にのみ、このメソッドが実際に実行されます。 たとえば、ロガーのログレベルがWARNの場合、プログラムでは、そのfatal()、error()、warn()メソッドが実行され、info() 、debug()、trace()メソッドは実行されません

Log インターフェースには、特定レベルのログ メッセージの出力が許可されているかどうかを判断するための一連のメソッドも提供されています:

l isFatalEnabled()

l isErrorEnabled()

l ……

l isTraceEnabled()

プログラムが特定のメッセージを出力する場合、このレベルのログ メッセージを送信する前に、上記のメソッドを呼び出して、このレベルのログの出力が許可されているかどうかを判断することをお勧めします。これにより、アプリケーションのパフォーマンスが向上します。たとえば、次のコードは、最初にログ メッセージを StringBuffer に追加し、最後にロガーの debug() メソッドを呼び出してログを出力します。 - ");

buf.append("Name:");

buf.append(username);

log.debug(buf.toString());

上記のコードの場合、ロガーが実際に DEBUG レベルのログの出力を許可すると、ロガーを実行する debug() メソッドはメッセージを出力しません。このとき、StringBuffer にメッセージを追加する一連の操作は冗長になります。パフォーマンスを向上させるために、isDebugEnabled() メソッドを合理的に使用して、アプリケーションによる冗長な操作の実行を回避できます。 StringBuffer();

buf.append("ログイン成功 - ");

buf.append("名前:");

buf.append(ユーザー名);

log.debug(bug.toString()) ;

}

(

二)LogFactory

Interface

org.apache.commons.logging.LogFactory インターフェイスには、ロガー インスタンスを取得するための 2 つの静的メソッドが用意されています。 public static Log getLog(String name)throws LogConfigurationException;public static Log getLog(Class class) throws LogConfigurationException;最初の getLog() メソッドは、ロガーの名前として name パラメーターを使用します。2 番目の getLog() メソッドは、クラス パラメーターで指定されたクラスの名前をロガーの名前として使用します。 2 番目の getLog () メソッドの実装:

public static Log getLog(Class class) throws LogConfigurationException{

getLog(class.getName); //call getLog(String name)

}

概要

Log4J は主に、Logger、Appender、Layout の 3 つの主要コンポーネントで構成されています。ロガーはログ情報の出力を制御し、アペンダーはログ情報の出力先を決定し、レイアウトはログ情報の出力形式を決定します。 Log4J を使用すると、ユーザーは構成ファイルでこれらのコンポーネントを柔軟に構成できます。プログラムで Log4J を使用すると、最初にロガーを取得し、次に構成ファイルを読み取り、Log4J 環境を構成するだけで、出力する必要がある場所で Logger クラスの適切なメソッドを呼び出すことができ、非常に便利です。プログラムにログを記録します。

以上がLog4jの基本的な使い方の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。