ロゴ4 jの設定と使用


原文:http://blog.csdn.net/azheng270/article/details/2173430/
Log 4 Jのプロファイルとは、レコーダのレベル、ストレージ、レイアウトを設定するためのもので、key=valueフォーマットの設定またはxmlフォーマットの設定情報に接続することができます.設定により、Log 4 Jの運転環境を作成することができます.
1.プロファイル
Log 4 Jプロファイルの基本フォーマットは以下の通りです.
嗳配置根ロギング
ロトロガー  =   [level]   ,  apender Name 1、  apender Name 2、  …
皱設定ログ情報出力先Apppender
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
その中の[level]はログ出力レベルで、5級があります.

FATAL       0  
ERROR      3  
WARN       4  
INFO         6  
DEBUG      7
Apppenderはログ出力先であり、Log 4 jが提供するアプリの種類は以下の通りです.
org.apache.log 4 j.sonine solieApppender(コンソール)、
org.apache.log 4 j.FileApppender(ファイル)、
org.apache.logl 4 j.DailyRollingFileApender(毎日ログファイルを作成)
org.apphe.logl 4 j.RollingFileApppender(ファイルサイズが指定サイズに達すると新しいファイルが作成されます.)
org.apache.log 4 j.WriterApender(ログ情報を任意の指定の場所にストリーミング形式で送信する)
Layout:ログ出力フォーマット、Log 4 j提供のlayoutには以下の種類があります.
org.apache.log 4 j.HTMLLayout(HTML形式でレイアウト)、
org.apaache.log 4 j.Pattern Layout(レイアウトモードを柔軟に指定できます)、
org.apache.log 4 j.SimpleLayout(ログ情報のレベルと情報文字列を含む)、
org.apache.log 4 j.TTCCLayout(ログ生成の時間、スレッド、カテゴリなどの情報を含む)
印刷パラメータ:Log 4 JはC言語のprintf関数と似たような印刷フォーマットログ情報を採用しています.以下の通りです.
   %m   コードで指定されたメッセージを出力します.
%p   出力優先度はDEBUG、INFO、WARN、ERROR、FATALです.
%r   アプリケーションからロゴ情報を出力するまでのミリ秒数を出力します.
%c   所属するクラスを出力します.通常は所属クラスのフルネームです.
%t   ログイベントを生成するスレッド名を出力します.
%n   Windowsプラットフォームは「/r/n」で、Unixプラットフォームは「/n」です.
%d   出力ログポイントの日付または時間は、デフォルトのフォーマットはISO 8601です.その後、フォーマットを指定することもできます.例えば、%d{yy MMM dd HH:mm:ss,SSS}出力は同様です.2002年10月18日です.  22:10:28、921 
%l   ログイベントの発生位置は、クラス名、発生スレッド、コード内の行数を含む.例:Testlog4.main(TestLog 4.java:10)
2.コードにロギングを初期化する:
1)プログラムでBaicConfigrator.co.figureを呼び出す()方法:根レコーダにConsolieApppenderを追加し、出力フォーマットはPattern Layoutを通じて「%4 r[%t]%5 p%c-%m%n」に設定し、さらに根レコーダのデフォルトレベルはLevel.DEBUGである.
2)ファイルに配置し、命令行パラメータでファイル名を伝達し、PropertyConfigrator.co.nfigre(args[x])で解析して配置する.
3)プロファイルに配置し、環境変数を通じてファイル名などの情報を伝達し、ロゴ4 jデフォルトの初期化プロセスを利用して解析して配置する.
4)ファイルに配置し、アプリケーションサーバでファイル名などの情報を転送するために、特殊なservletを利用して構成を完了します.
3.異なるアプリのためのログ出力レベルを設定します.
システムをデバッグする時、私達はよく注意しているのは異常レベルのログ出力だけですが、通常はすべてのレベルの出力は一つのファイルに入れられています.ログ出力のレベルがBUGなら!?ゆっくり探してみます.
この時、私たちは異常情報を単独で一つのファイルに出力できるといいと思うかもしれません.もちろんいいです.Log 4 jは既にこのような機能を提供しています.私達は配置の中でApplenderのThreshldを修正するだけで、下記のような例があります.
[プロファイル]
 ### 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.logに保存されていますか?
ロゴ4 j.properties使用
一.パラメータの意味説明
出力レベルの種類
ERROR、WARN、INFO、DEBUG
ERRORは深刻なエラーです.主にプログラムのエラーです.
WARNは一般的な警告であり、例えばsessionがなくなった場合
INFOは一般的に表示される情報です.例えばログインします.
DEBUGはプログラムのデバッグ情報です.
ログ情報出力先の設定
log 4 j.apender.apenderName=fully.qualifed.name.off.appnder.class
1.org.apache.logic 4 j.sonine solipppender(コンソール)
2.org.apache.log 4 j.FileApppender(ファイル)
3.org.apache.logic 4 j.DailyRollingFileApplender(毎日1つのログファイルを生成する)
4.org.apache.logl 4 j.RollingFileApppender(ファイルサイズが指定サイズに達すると新しいファイルが作成されます.)
5.org.apache.logl 4 j.WriterApender(ログ情報を任意の指定の場所にストリーミング形式で送信する)
ログ情報のフォーマットを設定
log 4 j.appender.appender Name.layout=fully.qualifed.name.off.layout.class
1.org.apache.log 4 j.HTMLLayout(HTML形式でレイアウト)、
2.org.apaache.log 4 j.Pattern Layout(レイアウトモードを柔軟に指定できます)、
3.org.apache.log 4 j.SimpleLayout(ログ情報のレベルと情報文字列を含む)、
4.org.apache.log 4 j.TTCCLayout(ログ生成の時間、スレッド、カテゴリなどの情報を含む)
コンソールのオプション
Threshld=DEBUG:ログメッセージの出力最低レベルを指定します.
ImmediateFlash=true:デフォルト値はtrueで、すべてのメッセージがすぐに出力されるという意味です.
Target=System.err:デフォルトではSystem.out、出力コンソールを指定します.
FileApppenderオプション
Threshld=DEBUF:ログメッセージの出力最低レベルを指定します.
ImmediateFlash=true:デフォルト値はtrueで、すべてのメッセージがすぐに出力されるという意味です.
File=mylog.txt:指定メッセージをmylogs.txtファイルに出力します.
Apped=false:デフォルト値はtrueで、これから指定されたファイルにメッセージを追加します.falseとは、指定されたファイルの内容をメッセージで上書きします.
RollingFileApppenderオプション
Threshld=DEBUG:ログメッセージの出力最低レベルを指定します.
ImmediateFlash=true:デフォルト値はtrueで、すべてのメッセージがすぐに出力されるという意味です.
File=mylog.txt:指定メッセージをmylogs.txtファイルに出力します.
Apped=false:デフォルト値はtrueで、これから指定されたファイルにメッセージを追加します.falseとは、指定されたファイルの内容をメッセージで上書きします.
MaxFileSize=100 KB:拡張子はKB、MBまたはGBであり、ログファイルがこの時間に達すると自動的にスクロールし、元の内容をmylogl.logl.1ファイルに移動します.
MaxBackupIndex=2:生成できるスクロールファイルの最大数を指定します.
log 4 j.appnder.A 1.layout.conversionPattern=%4 r%5 p%d{yyy-M-dd HH:mm:ssS}%c%m%n
ログ情報フォーマットのいくつかの記号が表す意味:
-X番号:X情報出力時に左揃え.
%p:出力ログ情報優先度はDEBUG,INFO,WARN,ERROR,FATALであり、
%d:出力ログポイントの日付または時間は、デフォルトのフォーマットはISO 8601であり、その後にフォーマットを指定することもできます.例えば%d{yy MMM dd HH:mm:ss,SSS}出力は同様です.2002年10月18日22時28分、921
%r:アプリケーション起動から出力までにかかったミリ秒数を出力します.
%c:出力ログ情報が属するクラスは、通常は所在クラスのフルネームです.
%t:ログイベントを生成するスレッド名を出力します.
%l:出力ログイベントの発生位置は、クラス名、発生スレッド、コード内の行数に相当します.例:Testlog4.main(TestLog 4.java:10)
%x:出力と現在のスレッドに関連するNDC(入れ子診断環境)は、特にjava servletsのようなマルチスレッドのアプリケーションに使用されます.
%%:「%」の文字を出力します.
%F:ログメッセージ生成時のファイル名を出力します.
%L:コードの行番号を出力します.
%m:コードで指定されたメッセージを出力し、ログの詳細情報を生成します.
%n:回車の改行を出力します.Windowsプラットフォームは「/r/n」、Unixプラットフォームは「/n」です.ログ情報を出力して改行します.
%とモード文字の間に修飾子を追加して、その最小幅、最大幅、テキストの配置を制御できます.例えば:
1)%20 c:指定出力categoryの名前は、最小の幅は20で、categoryの名前が20未満の場合、デフォルトの場合は右揃えです.
2)%20 c:出力categoryの名前を指定し、最小の幅は20です.categoryの名前が20未満の場合、「-」は左揃えを指定します.
3)%330 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
ファイル設定Sample 2
以下に示すLog 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ログに書き込む
2.WARN、ERROR、FATAL級エラー送信email通知管理者
3.他のレベルのエラーは直接バックグラウンドで出力されます.
実験ステップ:
2000 NTログに出力
1.Log 4 j圧縮バッグの中のNTEventLogApender.dllをWINNTT/SYSTEM 32ディレクトリの下に拷問する.
2.プロファイルのロゴ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!!!");
email通知管理者を送信します.
1.まずJavaMailとJAFをダウンロードします.
 
http://java.sun.com/j2ee/ja/javamail/index.html
  http://java.sun.com/beans/glasgow/jaf.html
プロジェクトの中でmail.jarとactivations.jarを引用します.
2.プロファイルを書く
皬はログをメールに送信します.
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.コールコード:
//ログをメールに送信する
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!!!");
-------------------------------------------
すべてのプロファイル:log 4 j.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
皬はログをメールに送信します.
 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!!!"); 
  } 
 }