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