log 4 jの構成の詳細

5695 ワード

1、log 4 jバージョン:1.2.142、log 4 j定義プロファイルlog 4 jは3つの重要なコンポーネントから構成する:i).ログ情報の優先度は、ERROR、WARN、INFO、DEBUGで、それぞれこのログ情報の重要度を指定します.ii).ログ情報の出力先は、ログがコンソールに印刷されるかファイルに印刷されるかを指定します.iii).ログ情報の出力フォーマットは、ログ情報の表示内容を制御します.3、プロファイルlog 4 j.propertiesi).ルートLoggerを配置し、その構文は:log 4 j.rootLogger=[level],appenderName,appenderName,...levelはログ記録の優先度であり,OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL,または定義したレベルに分けられる.Log 4 jは4つのレベルのみを使用することを推奨し、優先度が高いものから低いものまでERROR、WARN、INFO、DEBUGである.ここで定義したレベルでは、アプリケーション内の対応するレベルのログ情報のスイッチを制御できます.定義レベル以上のログのみが印刷されます.たとえば、ここでINFOレベルが定義されている場合、アプリケーション内のすべてのDEBUGレベルのログ情報は印刷されません.appenderNameとは、ログ情報がどこに出力されるかを意味します.複数の出力先を同時に指定できます.例えば、log 4 j.rootLogger=INFO, CONSOLE, LOGFILEii).ログ情報出力先Appenderを設定、その構文は:log 4 j.appender.appenderName=[fully.qualified.name.of.appender.class]Log 4 jが提供するappenderには、org.apache.log4j.ConsoleAppender、コンソールorgにログを印刷する.apache.log4j.FileAppender、指定ファイルorgにログを出力.apache.log4j.DailyRollingFileAppenderは、毎日1つのログファイルorgを生成します.apache.log4j.RollingFileAppender,ファイルサイズが指定サイズに達すると新しいファイルorgが生成される.apache.log4j.WriterAppenderは、ログ情報を任意に指定する場所、例えばlog 4 jにストリーム形式で送信する.appender.CONSOLE=org.apache.log4j.ConsoleAppender:1.ConsoleAppenderオプションThreshold=WARN:ログメッセージの出力の最下位階層ImmediateFlush=trueを指定する:デフォルト値はtrueであり、すべてのメッセージが直ちにTarget=Systemに出力ことを意味する.Err:デフォルトは:System.out,出力コンソール2を指定する.FileAppenderオプションThreshold=WARN:ログ・メッセージの出力の最下位レベルを指定します.ImmediateFlush=true:デフォルト値はtrueであり、すべてのメッセージがすぐに出力されることを意味します.File=mylog.txt:指定メッセージをmylogに出力する.txtファイル.Append=false:デフォルトはtrueで、指定したファイルにメッセージを追加します.falseは、指定したファイルの内容をメッセージを上書きします.3.DailyRollingFileAppenderオプションThreshold=WARN:ログメッセージの出力の最下位階層を指定ImmediateFlush=true:デフォルト値はtrueであり、すべてのメッセージがすぐにFile=mylogに出力ことを意味する.txt:指定メッセージをmylogに出力する.txtファイルAppend=false:デフォルト値はtrueで、メッセージを指定ファイルに追加します.falseは、指定したファイル内容DatePattern='.'をメッセージで上書きします.yyyy-ww:週に1回ファイルをスクロールします.つまり、週に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-H-mm:毎分4.RollingFileAppenderオプションThreshold=WARN:ログメッセージの出力の最下位階層ImmediateFlush=trueを指定する:デフォルト値はtrueであり、すべてのメッセージがすぐにFile=mylogに出力されることを意味する.txt:指定メッセージをmylogに出力する.txtファイルAppend=false:デフォルト値はtrueで、メッセージを指定ファイルに追加します.falseは、メッセージを指定ファイルの内容MaxFileSize=100 KBに上書きすることを意味します.接尾辞はKB、MB、またはGBです.ログファイルがこのサイズに達すると、自動的にスクロールし、元の内容をmylogに移動します.log.1ファイルMaxBackupIndex=2:生成可能なスクロールファイルの最大数iiiを指定する).ログ情報のフォーマット(レイアウト)を構成し、その構文はlog 4 jである.appender.appenderName.Layout=[fully.qualified.name.of.layout.class]Log 4 jが提供するlayoutには、org.apache.log4j.HTML Layoutは、HTMLテーブル形式でorgをレイアウトする.apache.log4j.PatternLayoutは、レイアウトパターンorgを柔軟に指定できる.apache.log4j.SimpleLayout、ログ情報のレベルと情報文字列orgを含む.apache.log4j.TTCCLayoutは、ログが生成する時間、スレッド、カテゴリなどの情報を含む、例えば、log 4 j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutはフォーマット情報を構成し、その構文は:log 4 j.appender. appenderName.layout.ConversionPattern=XXX XXX XXXlog 4 jが提供する印刷パラメータは以下の通り:-X番:X情報出力時左揃え;%p:出力ログ情報優先度、すなわちDEBUG,INFO,WARN,ERROR,FATAL,%d:出力ログ時点の日時、デフォルトフォーマットはISO 8601であり、その後にフォーマットを指定することもできる:%d{yyy MMM dd HH:mm:ss,SSS}出力類似:2002年10月18日22:10:28921%r:アプリケーション起動からこのlog情報の出力までのミリ秒数%c:出力ログ情報が属するクラス、通常はクラスのフルネーム%t:このログイベントを生成するスレッド名%lを出力する:出力ログイベントの発生位置、クラス名、発生スレッドを含む%C.%M(%F:%L)の組み合わせに相当するおよびコード内のローの数.例:Testlog 4.main(TestLog 4.java:10)%x:現在のスレッドに関連付けられたNDC(ネスト診断環境)を出力し、特にjava servletsのようなマルチクライアントマルチスレッドのアプリケーションに使用します.%:%文字%Fを出力:ログメッセージ生成時に存在するファイル名%L:出力コードの行番号%m:出力コードに指定されたメッセージ、生成されたログ詳細%n:リターン改行文字を出力Windowsプラットフォームは「r」、Unixプラットフォームは「」出力ログ情報改行%とモード文字の間に修飾子を付けて最小幅を制御できます.最大幅、およびテキストの配置.例:1)%20 c:出力categoryの名前を指定します.最小幅は20です.categoryの名前が20未満の場合、デフォルトでは右揃えになります.2)%-20 c:出力categoryの名前を指定し、最小幅は20であり、categoryの名前が20未満の場合、"-"号は左揃えを指定する.3)%.30 c:出力categoryの名前を指定します.最大幅は30です.categoryの名前が30より大きいと、左から多く出た文字が切り捨てられますが、30より小さいとスペースもありません.4)%20.30 c:categoryの名前が20未満の場合はスペースを埋め、右揃えにします.名前が30文字より長い場合は、左から遠出した文字を切り取ります.例えば、log 4 j.appender. CONSOLE.layout.ConversionPattern=%d{yyyyMMdd-H:mm:ss}%t%c%m%n 4、構成例#Set root category priority to INFO and its only appender to CONSOLE.log4j.rootCategory=INFO, CONSOLE# CONSOLE is set to be a ConsoleAppender using a PatternLayout.log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.Threshold=INFOlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p %c{1} %x - %m%n#appender FILE log4j.logger.org.sonatype.mavenbook=debug,FILElog4j.appender.FILE=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.FILE.Threshold=debuglog4j.appender.FILE.File=F:/maven.loglog4j.appender.FILE.Append=truelog4j.appender.FILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p -%m (%F:%L)%nlog4j.appender.FILE.DatePattern='.'yyyy-MM-dd 5、プログラムインスタンス
public class WeatherFormatter {

	private static Logger log = Logger.getLogger(WeatherFormatter.class);
	
	public String format( Weather weather ) throws Exception {
		log.info( "Formatting Weather Data" );
		
		Reader reader = new InputStreamReader(getClass().getClassLoader()
				.getResourceAsStream("output.vm"));
		VelocityContext context = new VelocityContext();
		context.put("weather", weather);
		StringWriter writer = new StringWriter();
		Velocity.evaluate(context, writer, "", reader);
		return writer.toString();
	}
}

 
 PS:
プロファイルlog 4 j.propertiesはclasspathによって管理される必要があります.
プロファイルはxmlファイル(log 4 j.xml)でもよく、classpathによって管理される必要があります.
ロード方法:
DOMConfigurator.configure("conf/log4j.xml");