[Log 4 j]構成Log 4 j
Log 4 Jのコンフィギュレーションファイル(Configuration File)は、key=value形式の設定またはxml形式の設定情報に接続できるレコーダのレベル、レジスタ、レイアウトを設定するために使用されます.構成することで、ログ4 Jの実行環境を作成することができます.
1.プロファイルLog 4 Jプロファイルの基本フォーマットは以下の通りです.
[レベル]はログ出力レベルで、合計5レベルです.
Appenderはログ出力先であり、Log 4 jが提供するappenderには以下のものがある.
Layout:ログ出力フォーマット、Log 4 jが提供するlayoutには以下のものがあります.
印刷パラメータ:Log 4 JはC言語のprintf関数のような印刷形式でログ情報をフォーマットし、以下のようにする.
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を構成中に変更するだけで実現できます.
[プロファイル]
[コードで使用]
実行して、異常情報が別のファイルerrorに保存されているかどうかを確認します.ロゴ
log4j.propertiesは1を使用する.パラメータ意味説明出力レベルの種類ERROR、WARN、INFO、DEBUGERRORは重大エラー主にプログラムのエラーWARNは一般警告であり、例えばsessionロスINFOは一般的に表示する情報であり、例えばDEBUGにログインしてプログラムのデバッグ情報構成ログ情報出力先とする
ログ情報のフォーマット
コンソールオプション
ログ情報フォーマットのいくつかのシンボルが表す意味:
%とモード文字の間に修飾子を付けて、最小幅、最大幅、およびテキストの位置合わせを制御できます.次のようになります.
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
以下に示すログ4 Jプロファイルは、コンソール、ファイル、ロールバックファイル、ログメールの送信、データベースログテーブルへの出力、カスタムラベルなどの機能を実現しています.
三.高度な使用実験目的:1.FATALレベルのエラーを2000 NTログに書き込む.WARN,ERROR,FATALレベルエラー送信email通知管理者3.他のレベルのエラーは直接バックグラウンドで実験ステップを出力:2000 NTログ1に出力.ログ4 jをパッケージに圧縮するdllはWINNTSYSTEM 32ディレクトリの下にコピーする.プロファイルlog 4 jを書き込む.properties#2000システムログ出力
3.呼び出しコード:
管理者へのメール通知の送信:
バックグラウンドですべてのカテゴリのエラーを出力します.
すべてのコード:Log 4 jTest.java
本文はCSDNブログから来て、転載して出典を明記してください:http://blog.csdn.net/renxianzuo/archive/2009/08/27/4489979.aspx
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