log 4 j基礎用法


Log 4 Jのコンフィギュレーションファイル(Configuration File)は、key=value形式の設定またはxml形式の設定情報に接続できるレコーダのレベル、レジスタ、レイアウトを設定するために使用されます.構成することで、ログ4 Jの実行環境を作成することができます.Log 4 jというプロファイルはLog 4 jです.propertiesのファイル.
log4j.propertiesファイル:
#newhappy  log4j.properties start

log4j.rootLogger=DEBUG,myConsole,myLogFile
#console appender
log4j.appender.myConsole=org.apache.log4j.ConsoleAppender
log4j.appender.myConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.myConsole.layout.ConversionPattern=%5p [%t] (%F:%L) -%m%n
log4j.appender.myConsole.threshold=FATAL
#rolling file appender
log4j.appender.myLogFile=org.apache.log4j.RollingFileAppender
log4j.appender.myLogFile.File=mylog.log
log4j.appender.myLogFile.MaxFileSize=100KB
log4j.appender.myLogFile.MaxBackupIndex=2
log4j.appender.myLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.myLogFile.layout.ConversionPattern=%d{mmm d,yyyy hh:mm:ss a} : %p [%t] %m%n
log4j.appender.myLogFile.threshold=ERROR

#newhappy log4j.properties end

1.プロファイルLog 4 Jプロファイルの基本フォーマットは以下の通りです.
	#   Logger
	log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …

	#           Appender
	log4j.appender.appenderName  =  fully.qualified.name.of.appender.class 
	log4j.appender.appenderName.option1  =  value1 
	… 
	log4j.appender.appenderName.optionN  =  valueN 

	#         (  )
	log4j.appender.appenderName.layout  =  fully.qualified.name.of.layout.class 
	log4j.appender.appenderName.layout.option1  =  value1 
	… 
	log4j.appender.appenderName.layout.optionN  =  valueN  

[レベル]はログ出力レベルで、合計5レベルです.
	FATAL		0  
	ERROR		3  
	WARN		4  
	INFO		6  
	DEBUG		7 

Appenderはログ出力先であり、Log 4 jが提供するappenderには以下のものがある.
	org.apache.log4j.ConsoleAppender(   ),
	org.apache.log4j.FileAppender(  ),
	org.apache.log4j.DailyRollingFileAppender(          ),
	org.apache.log4j.RollingFileAppender(                     ),
	org.apache.log4j.WriterAppender(                   )

Layout:ログ出力フォーマット、Log 4 jが提供するlayoutには以下のものがあります.
	org.apache.log4j.HTMLLayout( HTML      ),
	org.apache.log4j.PatternLayout(           ),
	org.apache.log4j.SimpleLayout(               ),
	org.apache.log4j.TTCCLayout(         、  、      ) 

印刷パラメータ:Log 4 JはC言語のprintf関数のような印刷形式でログ情報をフォーマットし、以下のようにする.
	%m	          
	%p	     , DEBUG,INFO,WARN,ERROR,FATAL 
	%r	           log         
	%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.コードでLoggerを初期化する:
1)プログラムでBasicConfiguratorを呼び出す.configure()メソッド:ルートレコーダにConsoleAppenderを追加し、出力フォーマットをPatternLayoutで「%-4 r[%t]%-5 p%c%x-%m%n」に設定し、ルートレコーダのデフォルトレベルはLevelである.DEBUG. 2)ファイルに配置し、コマンドラインパラメータでファイル名を渡し、PropertyConfiguratorを通す.configure(args[x])は解析して構成する.3)ファイルに配置し、環境変数を通じてファイル名などの情報を伝達し、log 4 jのデフォルトの初期化プロセスを利用して解析し、構成する.4)コンフィギュレーションをファイルに入れ,アプリケーションサーバコンフィギュレーションによりファイル名などの情報を伝達し,特殊なservletを用いてコンフィギュレーションを完了する.
3.異なるAppenderのログ出力レベルを設定する:システムをデバッグする時、私達はよく注意するのは異常レベルのログ出力だけで、しかし通常すべてのレベルの出力はすべて1つのファイルの中に置いて、もしログ出力のレベルがBUGであるならば!?じゃ、ゆっくり探しに行きましょう.このとき、異常情報を1つのファイルに単独で出力できればいいのではないかと思うかもしれません.もちろん、Log 4 jはすでにこのような機能を提供しており、AppenderのThresholdを構成中に変更するだけで実現できます.例えば、次の例です.
	#    ]
	### set log levels ###
	log4j.rootLogger = debug ,  stdout ,  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 

コード:
	public   class  TestLog4j   {
		public   static   void  main(String[] args)   {
			PropertyConfigurator.configure( " D:/Code/conf/log4j.properties " );
			Logger logger  =  Logger.getLogger(TestLog4j. class );
			logger.debug( " debug " );
			logger.error( " error " );
		} 
	} 

4、異なるパッケージに対して異なる出力情報レベルを設定する
eg:OpenSessionInViewFilterのdebugレベル情報を印刷する方法:log 4 j.logger.org.springframework.orm.hibernate3.support.OpenSessionInViewFilter=debug Strutsラベルのwarnレベル情報を印刷する方法:log 4 j.logger.org.apache.struts.util=WARN