[Log 4 j]構成Log 4 j


Log 4 Jのコンフィギュレーションファイル(Configuration File)は、key=value形式の設定またはxml形式の設定情報に接続できるレコーダのレベル、レジスタ、レイアウトを設定するために使用されます.構成することで、ログ4 Jの実行環境を作成することができます.
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
”,Unix “
” %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 " );
     } 
 } 

  
実行して、異常情報が別のファイルerrorに保存されているかどうかを確認します.ロゴ
 
log4j.propertiesは1を使用する.パラメータ意味説明出力レベルの種類ERROR、WARN、INFO、DEBUGERRORは重大エラー主にプログラムのエラーWARNは一般警告であり、例えばsessionロスINFOは一般的に表示する情報であり、例えばDEBUGにログインしてプログラムのデバッグ情報構成ログ情報出力先とする
log4j.appender.appenderName = fully.qualified.name.of.appender.class
1.org.apache.log4j.ConsoleAppender(   )
2.org.apache.log4j.FileAppender(  )
3.org.apache.log4j.DailyRollingFileAppender(          )
4.org.apache.log4j.RollingFileAppender(                     )
5.org.apache.log4j.WriterAppender(                   )

 
ログ情報のフォーマット
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
1.org.apache.log4j.HTMLLayout( HTML      ),
2.org.apache.log4j.PatternLayout(           ),
3.org.apache.log4j.SimpleLayout(               ),
4.org.apache.log4j.TTCCLayout(         、  、      )

 
コンソールオプション
Threshold=DEBUG:             。
ImmediateFlush=true:    true,               。
Target=System.err:      :System.out,       
FileAppender   
Threshold=DEBUF:             。
ImmediateFlush=true:    true,               。
File=mylog.txt:       mylog.txt  。
Append=false:    true,            ,false             。
RollingFileAppender   
Threshold=DEBUG:             。
ImmediateFlush=true:    true,               。
File=mylog.txt:       mylog.txt  。
Append=false:    true,            ,false             。
MaxFileSize=100KB:      KB, MB     GB.            ,      ,         mylog.log.1  。
MaxBackupIndex=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},    :2002 10 18  22:10:28,921
 %r:            log        
 %c:            ,          
 %t:              
 %l:            ,   %C.%M(%F:%L)   ,     、     ,         。  :Testlog4.main (TestLog4.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文字より長い場合は左から遠く出力された文字を切り取ります.二.ファイル構成Sample 1
log4j.rootLogger=DEBUG,A1,R
#log4j.rootLogger=INFO,A1,R
# ConsoleAppender   
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
# File          ,        ,       
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=blog_log.txt
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
    Sample2

 
以下に示すログ4 Jプロファイルは、コンソール、ファイル、ロールバックファイル、ログメールの送信、データベースログテーブルへの出力、カスタムラベルなどの機能を実現しています.
 
log4j.rootLogger=DEBUG,CONSOLE,A1,im 
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
log4j.addivity.org.apache=true
################### 
# Console Appender 
################### 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.Threshold=DEBUG 
log4j.appender.CONSOLE.Target=System.out 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n 
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
##################### 
# File Appender 
##################### 
log4j.appender.FILE=org.apache.log4j.FileAppender 
log4j.appender.FILE.File=file.log 
log4j.appender.FILE.Append=false 
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n 
# Use this layout for LogFactor 5 analysis
######################## 
# Rolling File 
######################## 
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender 
log4j.appender.ROLLING_FILE.Threshold=ERROR 
log4j.appender.ROLLING_FILE.File=rolling.log 
log4j.appender.ROLLING_FILE.Append=true 
log4j.appender.ROLLING_FILE.MaxFileSize=10KB 
log4j.appender.ROLLING_FILE.MaxBackupIndex=1 
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#################### 
# Socket Appender 
#################### 
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender 
log4j.appender.SOCKET.RemoteHost=localhost 
log4j.appender.SOCKET.Port=5001 
log4j.appender.SOCKET.LocationInfo=true 
# Set up for Log Facter 5 
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout 
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
######################## 
# Log Factor 5 Appender 
######################## 
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender 
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
######################## 
# SMTP Appender 
####################### 
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender 
log4j.appender.MAIL.Threshold=FATAL 
log4j.appender.MAIL.BufferSize=10 
[email protected] 
log4j.appender.MAIL.SMTPHost=mail.hollycrm.com 
log4j.appender.MAIL.Subject=Log4J Message 
[email protected] 
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout 
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
######################## 
# JDBC Appender 
####################### 
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender 
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test 
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver 
log4j.appender.DATABASE.user=root 
log4j.appender.DATABASE.password= 
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n') 
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout 
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.A1.File=SampleMessages.log4j 
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j' 
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
################### 
#   Appender 
################### 
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net 
log4j.appender.im.username = username 
log4j.appender.im.password = password 
log4j.appender.im.recipient = [email protected] 
log4j.appender.im.layout=org.apache.log4j.PatternLayout 
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

 
三.高度な使用実験目的:1.FATALレベルのエラーを2000 NTログに書き込む.WARN,ERROR,FATALレベルエラー送信email通知管理者3.他のレベルのエラーは直接バックグラウンドで実験ステップを出力:2000 NTログ1に出力.ログ4 jをパッケージに圧縮するdllはWINNTSYSTEM 32ディレクトリの下にコピーする.プロファイルlog 4 jを書き込む.properties#2000システムログ出力
log4j.logger.NTlog=FATAL, A8
 # APPENDER A8
 log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
 log4j.appender.A8.Source=JavaTest
 log4j.appender.A8.layout=org.apache.log4j.PatternLayout
 log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

  
3.呼び出しコード:
Logger logger2 = Logger.getLogger("NTlog"); //              
 logger2.debug("debug!!!");
 logger2.info("info!!!");
 logger2.warn("warn!!!");
 logger2.error("error!!!");
 //          2000  
 logger2.fatal("fatal!!!");

  
管理者へのメール通知の送信:
1.     JavaMail JAF, 
  http://java.sun.com/j2ee/ja/javamail/index.html 
  http://java.sun.com/beans/glasgow/jaf.html 
       mail.jar activation.jar。
 2.      
 #       email
 log4j.logger.MailLog=WARN,A5
 #  APPENDER A5
 log4j.appender.A5=org.apache.log4j.net.SMTPAppender
 log4j.appender.A5.BufferSize=5
 [email protected] 
 [email protected] 
 log4j.appender.A5.Subject=ErrorLog
 log4j.appender.A5.SMTPHost=smtp.263.net
 log4j.appender.A5.layout=org.apache.log4j.PatternLayout
 log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
 3.    :
 //      mail
 Logger logger3 = Logger.getLogger("MailLog");
 logger3.warn("warn!!!");
 logger3.error("error!!!");
 logger3.fatal("fatal!!!");

  
バックグラウンドですべてのカテゴリのエラーを出力します.
 1.      
 #      
 log4j.logger.console=DEBUG, A1
 # APPENDER A1
 log4j.appender.A1=org.apache.log4j.ConsoleAppender
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
 2.    
 Logger logger1 = Logger.getLogger("console");
 logger1.debug("debug!!!");
 logger1.info("info!!!");
 logger1.warn("warn!!!");
 logger1.error("error!!!");
 logger1.fatal("fatal!!!");
--------------------------------------------------------------------
       :log4j.properties
 #      
 log4j.logger.console=DEBUG, A1
 # APPENDER A1
 log4j.appender.A1=org.apache.log4j.ConsoleAppender
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
#  2000      
 log4j.logger.NTlog=FATAL, A8
 # APPENDER A8
 log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
 log4j.appender.A8.Source=JavaTest
 log4j.appender.A8.layout=org.apache.log4j.PatternLayout
 log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
#       email
 log4j.logger.MailLog=WARN,A5
 #  APPENDER A5
 log4j.appender.A5=org.apache.log4j.net.SMTPAppender
 log4j.appender.A5.BufferSize=5
 [email protected] 
 [email protected] 
 log4j.appender.A5.Subject=ErrorLog
 log4j.appender.A5.SMTPHost=smtp.263.net
 log4j.appender.A5.layout=org.apache.log4j.PatternLayout
 log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

 
すべてのコード:Log 4 jTest.java 
/* 
  *      2003-11-13 
  */ 
 package edu.bcu.Bean; 
 import org.apache.log4j.*; 
 //import org.apache.log4j.nt.*; 
 //import org.apache.log4j.net.*; 
 /** 
  * @author yanxu 
  */ 
 public class Log4jTest 
 { 
  public static void main(String args[]) 
  { 
   PropertyConfigurator.configure("log4j.properties"); 
   //      
   Logger logger1 = Logger.getLogger("console"); 
   logger1.debug("debug!!!"); 
   logger1.info("info!!!"); 
   logger1.warn("warn!!!"); 
   logger1.error("error!!!"); 
   logger1.fatal("fatal!!!");
// NT       
   Logger logger2 = Logger.getLogger("NTlog"); 
   //NTEventLogAppender nla = new NTEventLogAppender(); 
   logger2.debug("debug!!!"); 
   logger2.info("info!!!"); 
   logger2.warn("warn!!!"); 
   logger2.error("error!!!"); 
   //          2000   
   logger2.fatal("fatal!!!");
//      mail 
   Logger logger3 = Logger.getLogger("MailLog"); 
   //SMTPAppender sa = new SMTPAppender(); 
   logger3.warn("warn!!!"); 
   logger3.error("error!!!"); 
   logger3.fatal("fatal!!!"); 
  } 
 } 

 
本文はCSDNブログから来て、転載して出典を明記してください:http://blog.csdn.net/renxianzuo/archive/2009/08/27/4489979.aspx