1. 設定ファイル
Log4J 構成ファイルの基本的な形式は次のとおりです。
次のようにコードをコピーします。
#ルートロガーを設定する
log4j.rootLogger = [レベル] , appenderName1 , appenderName2 , …
#ログ情報出力先の設定 Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = 値1
…
log4j.appender.appenderName.optionN = 値N
#ログ情報のフォーマット(レイアウト)を設定する
log4j.appender.appenderName.layout = レイアウトクラスの完全に修飾された名前
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
[level] はログ出力レベルで、合計 5 つのレベルがあります。
次のようにコードをコピーします。
フェイタル0
エラー3
警告4
情報6
デバッグ 7
Appender はログの出力先です。 Log4j が提供するアペンダーには次のものがあります。
次のようにコードをコピーします。
org.apache.log4j.ConsoleAppender(コンソール)、
org.apache.log4j.FileAppender(ファイル)、
org.apache.log4j.DailyRollingFileAppender (毎日ログ ファイルを生成します)、
org.apache.log4j.RollingFileAppender (ファイル サイズが指定されたサイズに達すると新しいファイルを生成します)、
org.apache.log4j.WriterAppender (ログ情報をストリーミング形式で指定した場所に送信します)
レイアウト: Log4j が提供するログ出力形式は次のとおりです。
org.apache.log4j.HTMLLayout (HTML テーブル形式のレイアウト)、
org.apache.log4j.PatternLayout (レイアウトパターンを柔軟に指定可能)、
org.apache.log4j.SimpleLayout (ログ情報のレベルと情報文字列が含まれます)、
org.apache.log4j.TTCCLayout (ログ生成時間、スレッド、カテゴリなどの情報が含まれます)
パラメータの出力: Log4J は、C 言語の printf 関数に似た出力形式を使用して、次のようにログ情報をフォーマットします。
次のようにコードをコピーします。
%m コードで指定されたメッセージを出力します。 %p 出力の優先順位、つまり DEBUG、INFO、WARN、ERROR、FATAL
%r アプリケーションの起動からログ情報が出力されるまでにかかったミリ秒数を出力します。 %c 属するカテゴリを出力します。通常はクラスの完全名です。 %t ログ イベントを生成したスレッドの名前を出力します。 %nキャリッジ リターンとライン フィード文字を出力します。Windows プラットフォームは「/r/n」、Unix プラットフォームは「/n」です。
%d は、ログ時点の日付または時刻を出力します。デフォルトの形式は ISO8601 です。%d{yyy MMM dd HH:mm:ss, SSS} のように、後で形式を指定することもできます。 : 2002 年 10 月 18 日 22:10:28、921
%l ログ イベントが発生した場所 (カテゴリ名、発生したスレッド、コード内の行番号など) を出力します。例: Testlog4.main(TestLog4.java: 10)
2. コードでロガーを初期化します。 1) プログラム内で BasicConfigurator.configure() メソッドを呼び出します。 ConsoleAppender をルート レコーダーに追加し、PatternLayout を通じて出力形式を「%-4r [%t] %-5p %c %x - %m%n」に設定します。また、ルートロガーのデフォルトのレベルは Level.DEBUG です。
2) 構成がファイルに配置され、ファイル名がコマンド ライン パラメーターを介して渡され、PropertyConfigurator.configure(args[x]) を介して解析および構成されます。
3) 構成はファイルに配置され、ファイル名とその他の情報が環境変数を介して渡され、log4j のデフォルトの初期化プロセスが解析と構成に使用されます。
4) 設定はファイルに配置され、ファイル名とその他の情報がアプリケーション サーバー設定を介して渡され、特別なサーブレットを使用して設定が完了します。
3. さまざまなアペンダーのログ出力レベルを設定します。
システムをデバッグするとき、例外レベルのログ出力のみに注目することがよくありますが、通常、ログ出力レベルが BUG! の場合、すべてのレベルの出力が 1 つのファイルに配置されます。 ?それからゆっくり探してください。
このとき、例外情報を別途ファイルに出力できればいいのに、と思うかもしれません。もちろん、Log4j はそのような機能をすでに提供しています。これを実現するには、次の例のように、構成内の Appender のしきい値を変更するだけです。
[設定ファイル]
次のようにコードをコピーします。
### ログレベルを設定します ###
log4j.rootLogger = デバッグ、標準出力、D、E
###コンソールへの出力###
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{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
### ログファイルへの出力###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## DEBUG レベル以上のログを出力します
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 例外情報を別のファイルに保存します###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log ## 例外ログファイル名
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR ## ERROR レベルを超えるログのみを出力します!!!
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %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( " エラー " );
}
}
これを実行し、例外情報が別のファイル error.log に保存されているかどうかを確認します。