Log4j
主要由三大部分:
1??????
公共類
Logger :
負責處理日志記錄的大部分操作。
?
2??????
公共接口
Appender :
負責控制日志記錄的輸出部分。它提供了多種輸出目標。
2.1.1?
FileAppender???????
輸出到文本
2.1.2?
ConsoleAppender????
輸出到控制臺
2.1.3?????
SMTPAppender???????
輸出到郵件
2.1.4?
JDBCAppender??????
輸出到數據庫
3??????
布局
Layout :
負責格式化
Appender
輸出。有三種布局模式:
3.1?????
SimpleLayout :
簡單格式
「
DEBUG - Here is some DEBUG
」
的日志輸出。
3.2?????
HTMLLayout :
以
HTML
表格輸出。
3.3?????
PatternLayout :
自定義格式化的日志輸出。打印參數如下:
3.3.1?
%m
輸出代碼中指定的消息
3.3.2?
%p
輸出優先級,即
DEBUG
,
INFO
,
WARN
,
ERROR
,
FATAL
3.3.3?
%r
輸出自應用啟動到輸出該
log
信息耗費的毫秒數
3.3.4?
%c
輸出所屬的類目,通常就是所在類的全名
3.3.5?
%t
輸出產生該日志事件的線程名
3.3.6?
%n
輸出一個回車換行符,
Windows
平臺為“
\r\n”
,
Unix
平臺為“
\n”
3.3.7?
%d
輸出日志時間點的日期或時間,默認格式為
ISO8601
,也可以在其后指定格式,比如:
%d{yyy MMM dd HH:mm:ss,SSS}
,輸出類似:
2002
年
10
月
18
日
22
:
10
:
28
,
921
?
log4j.properties
的配置如下:
####?debug是輸出級別,分別是debug<info<warn<error<fatal
####?R是輸出到log
,
cmd是輸出到控制臺
,
htm輸出到HTML
log4j.rootCategory
=
debug
,
?R
,
?cmd
,
?htm
##控制臺輸出
log4j.appender.cmd
=
org.apache.log4j.ConsoleAppender
#布局格式
log4j.appender.cmd.layout
=
org.apache.log4j.PatternLayout
log4j.appender.cmd.layout.ConversionPattern
=
?%-2r?
[
%t
]
?%-6p?%c?-?%m%n
##控制臺輸出
log4j.appender.htm
=
org.apache.log4j.FileAppender
log4j.appender.htm.File
=
example.html
log4j.appender.htm.layout
=
org.apache.log4j.HTMLLayout
##log格式輸出
#log4j.appender.R
=
org.apache.log4j.FileAppender
#log4j.appender.R
=
org.apache.log4j.DailyRollingFileAppender
log4j.appender.R
=
org.apache.log4j.RollingFileAppender
log4j.appender.R.File
=
test.log
#最大日志大小
log4j.appender.R.MaxFileSize
=
100KB???
#最大備份數
log4j.appender.R.MaxBackupIndex
=
1
????
log4j.appender.R.layout
=
org.apache.log4j.SimpleLayout
代碼如下:
package
?com.hmy.Log4JTest;
import
?java.io.File;
import
?org.apache.log4j.Logger;
import
?org.apache.log4j.PropertyConfigurator;
public
?
class
?Log4jTest?{
????
????
static
?{
????????
//
?自動快速地使用缺省Log4j環境。
????????
//
?BasicConfigurator.configure();
????????
//
?讀取使用Java的特性文件編寫的配置文件。
????????
//
?PropertyConfigurator.configure?("/WEB-INF/log4j.properties");
????????
//
?讀取XML形式的配置文件。
????????
//
?DOMConfigurator.configure?("/WEB-INF/log4j.xml");
????????String?file?
=
?
new
?String(
"
E:/project?by?eclipse/test/com/hmy/Log4JTest/log4j.properties
"
);??????????????
????????
if
?(file?
!=
?
null
)?{
????????????PropertyConfigurator.configure(file);
????????}
????}
????
????
static
?Logger?logger?
=
?Logger.getLogger(Log4jTest.
class
);
????
????
public
?
static
?
void
?main(String[]?aaa)?{
??????????logger.debug(
"
Here?is?some?DEBUG
"
);
??????????logger.info(
"
Here?is?some?INFO
"
);
??????????logger.warn(
"
Here?is?some?WARN
"
);
??????????logger.error(
"
Here?is?some?ERROR
"
);
??????????logger.fatal(
"
Here?is?some?FATAL
"
);
????}
}
下面是網上找的一個配置文件,擇其一二使用就夠用了。
log4j.rootLogger=DEBUG,CONSOLE,A1,im
log4j.addivity.org.apache=true
?
#?應用于控制臺
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
#應用于文件
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
#?應用于文件回滾
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
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
#?發送日志給郵件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=web@www.wuset.com
log4j.appender.MAIL.SMTPHost=www.wusetu.com
log4j.appender.MAIL.Subject=Log4J?Message
log4j.appender.MAIL.To=web@www.wusetu.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework]?%d?-?%c?-%-4r?[%t]?%-5p?%c?%x?-?%m%n
#?用于數據庫
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?=?corlin@cybercorlin.net
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern?=[framework]?%d?-?%c?-%-4r?[%t]?%-5p?%c?%x?-?%m%n
?
?