1.Log4jのメリット
Log4j は Apache のオープンソース プロジェクトです。Log4j を使用すると、ログ情報の出力場所を制御したり、各ログ情報のレベルを定義したりすることができます。生成プロセスの詳細。最も興味深いのは、アプリケーション コードを変更せずに、構成ファイルを通じてこれらを柔軟に構成できることです。
log4j の利点は次のとおりです。
(1) 設定ファイルを変更することで、ログ情報の送信先 (コンソール、ファイル、GUI コンポーネント、さらにはソケット サーバー、NT イベント レコーダー、UNIX Syslog デーモンなど) を決定できます。
(2) 設定ファイルを変更することで、各ログメッセージのレベルを定義し、出力するかどうかを制御できます。システム開発段階では、詳細なログ情報を出力してシステムの動作を追跡できます。システムが安定した後、ログ出力をオフにすることで、ジャンク コード (System.out.println(..) を削減しながらシステムの動作を追跡できます。 ....)待って)。
(3) log4j を使用するには、システム全体で統一されたログ機構が必要であり、システム計画に役立ちます。
2. 設定ファイル
Log4j は、ログ情報の優先順位、ログ情報の出力先、ログ情報の出力形式の 3 つの重要な要素で構成されています。ログ情報の優先順位は、高い順に FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL となり、それぞれログ情報の重要度を指定します。コンソールまたはファイルに出力され、出力形式によってログ情報の表示内容が制御されます。
2.1 ログ情報の優先順位
Log4j では、優先順位は高から低まで、ERROR、WARN、INFO、DEBUG の 4 つのレベルのみを使用することをお勧めします。ここで定義したレベルにより、アプリケーション内の対応するレベルのログ情報のオンとオフを制御できます。ここで INFO レベルが定義されている場合、アプリケーション内の INFO レベル以下のすべてのログ情報は出力されません。
2.2 出力ソースの使用
ロギング リクエストの選択的な有効化または無効化は、Log4j の機能の一部にすぎません。 Log4j では、ログ要求を複数の出力ソースに出力できます。 Log4j 用語では、出力ソースはアペンダーと呼ばれます。
アペンダには、コンソール、ファイル、GUI コンポーネント、リモート ソケット サーバー、JMS、NT イベント ロガー、リモート UNIX Syslog デーモン (リモート UNIX バックグラウンド ログ サービス) が含まれます。非同期録音も可能です。 ロガーは複数のアペンダーを設定できます。 addAppender メソッドを使用して、アペンダーを特定のロガーに追加します。特定のロガーについて、有効なログ要求はそれぞれ、ロガーのすべてのアペンダーとロガーの親ロガーのアペンダーに転送されます。
2.2.1 コンソールアペンダー
ConsoleAppender を使用すると、ログ情報が Console に書き込まれます。この効果は、情報を System.out に直接出力するのと同じです。
2.2.2 ファイルアペンダー
FileAppender を使用すると、指定したファイルにログ情報が書き込まれます。これはより頻繁に使用される状況になるはずです。 したがって、ログ出力のファイル名を設定ファイルに指定する必要があります。次の構成では、ログ ファイル名 log.txt を指定します。
log4j.appender.appendername.File=log.txt 特定の構成では、appendername が Appender のエイリアスに置き換えられることに注意してください。
注: 指定されたログ ファイル パスに問題があります
2.2.3 DailyRollingAppender
FileAppenderを使用してログ情報をファイルに出力することもできますが、ファイルが大きすぎると読みにくくなります。現時点では、DailyRollingAppender を使用できます。 DailyRollingAppender では、ログ情報を日付ごとに区切ってファイルに出力できます。構成ファイルはログ ファイルを毎日生成し (時刻は設定可能)、各ログ ファイルにはその日のログ情報のみが記録されます。
次のようにコードをコピーします。
log4j.appender.appendername=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Aappendername.file=log
log4j.appender.appendername.DatePattern='.'yyyy-MM-dd
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern= %5r %-5p %c{2} - %m%n
2.2.4 RollingFileAppender
ファイルサイズが指定したサイズに達すると、新しいファイルが生成されます。
次のようにコードをコピーします。
og4j.appender.appendername=org.apache.log4j.RollingFileAppender
log4j.appender.appendername.File= ../logs/rlog.log
#最大ログ ファイル サイズを制御する
log4j.appender.appendername.MaxFileSize=100KB
# アーカイブ ログ ファイル (ここでは 1 つのバックアップ ファイル)
log4j.appender.appendername.MaxBackupIndex=1
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern=%p %t %c - %m%n
この構成ファイルは、回転ログ ファイルである出力ソースのアペンダ名を指定します。最大ファイルは 100KB です。ログ ファイルが最大サイズに達すると、Log4J は自動的に rlog.log の名前を rlog.log.1 に変更し、新しい rlog.log ファイルを再構築して順番にローテーションします。
2.2.5 WriterAppender
ログ情報をストリーミング形式で任意の場所に送信します。
2.3 レイアウト構成
レイアウトはログ情報の出力形式を指定します。
2.3.1 レイアウトスタイル
次のようにコードをコピーします。
org.apache.log4j.HTMLLayout (HTML テーブル形式のレイアウト)、
org.apache.log4j.PatternLayout (レイアウトパターンを柔軟に指定可能)、
org.apache.log4j.SimpleLayout (ログ情報のレベルと情報文字列が含まれます)、
org.apache.log4j.TTCCLayout (ログ生成時間、スレッド、カテゴリなどの情報が含まれます)
2.3.2 フォーマット
次のようにコードをコピーします。
%m はコードで指定されたメッセージを出力します
%p 出力優先順位、つまり DEBUG、INFO、WARN、ERROR、FATAL
%r アプリケーション起動からログ情報が出力されるまでにかかった時間をミリ秒で出力します。
%c は、それが属するカテゴリ (通常はクラスの完全名) を出力します。
%t は、ログ イベントを生成したスレッドの名前を出力します。
%n は、キャリッジ リターンとライン フィード文字を出力します。これは、Windows プラットフォームでは「rn」、Unix プラットフォームでは「n」です。
%d は、ログ時点の日付または時刻を出力します。デフォルトの形式は ISO8601 です。%d{yyy MMM dd HH:mm:ss,SSS} のように、後で形式を指定することもできます。 : 2002 年 10 月 18 日 22:10:28,921
%l ログ イベントが発生した場所 (カテゴリ名、発生したスレッド、コード内の行番号など) を出力します。例: Testlog4.main(Test Log4.java:10)
3.さまざまなアペンダーのログ出力レベルを設定する
これは、次の例のように、構成内のアペンダーのしきい値を変更することで実現できます。
設定ファイル:
log4j.rootLogger = デバッグ、A、B、C
#コンソールへの出力
log4j.appender.A = org.apache.log4j.ConsoleAppender
log4j.appender.A.Target = System.out
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = %p %t %c - %m%n
# ログファイルに出力
log4j.appender.B = org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File = logs/log.log
log4j.appender.B.Append = true
log4j.appender.B.Threshold = DEBUG # EBUG レベル以上のログを出力します
log4j.appender.B.layout = org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern = %p %t %c - %m%n
# 例外情報を別ファイルに保存
log4j.appender.C = org.apache.log4j.DailyRollingFileAppender
log4j.appender.C.File = logs/error.log #例外ログファイル名
log4j.appender.C.Append = true
log4j.appender.C.Threshold = ERROR #ERROR レベルを超えるログのみを出力します
log4j.appender.C.layout = org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = %p %t %c - %m%n
例:
次のようにコードをコピーします。
パブリック クラス TestLog4j
{
public static void main(String[] args)
{
PropertyConfigurator.configure("D:/Code/conf/log4j.properties");
ロガー logger = Logger.getLogger(TestLog4j.class);
logger.debug("デバッグ");
logger.error("エラー");
}
}