Log4j
有三个主要的组件:
Loggers
,
Appenders
和
Layouts
,即日志类别,日志要输出的地方和日志以何种形式输出。
1
、
Loggers
Loggers
组件在此系统中被分为六个级别:
TRACE
、
DEBUG
、
INFO
、
WARN
、
ERROR
和
FATAL
2
、
Appenders
Log4j
日志系统允许把日志输出到不同的地方,如控制台(
Console
)、文件(
Files
)、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。
其语法表示为:
org.apache.log4j.ConsoleAppender
(控制台)
org.apache.log4j.FileAppender
(文件)
org.apache.log4j.DailyRollingFileAppender
(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender
(文件大小到指定尺寸时产生一个新的文件)
org.apache.log4j.WriterAppender
(将日志信息以流格式发送到任意指定的地方)
3
、
Layouts
Log4j
可以在
Appenders
的后面附加
Layouts
来完成这个功能。
Layouts
提供了四种日志输出样式,如根据
HTML
样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式等等。
其语法表示为:
org.apache.log4j.HTMLLayout
(以
HTML
表格形式布局)
org.apache.log4j.PatternLayout
(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout
(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout
(包含日志产生的时间、线程、类别等等信息)
在实际编程时,要使
Log4j
真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对
Logger
、
Appender
及
Layout
的分别使用,具体如下:
1
、
配置根
Logger
,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
level
指
Logger
的优先级,
appenderName
是日志信息的输出地,可以同时指定多个输出地。
如:
log4j.rootLogger= INFO,A1,A2
2
、
配置日志信息输出目的地
,其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
可以指定上述五个目的地中的一个。
3
、
配置日志信息的格式
,其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
下面给出一个具体配置例子,在程序中可以参照执行:
log4j.rootLogger=INFO,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=
%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
这里需要说明的就是日志信息格式中几个符号所代表的含义:
-
X
号
: X
信息输出时左对齐;
%p:
日志信息级别
%c:
日志信息所在地(类名),通常就是所在类的全名
%m:
产生的日志具体信息
%n:
输出日志信息换行,
Windows
平台为“
\r\n
”,
Unix
平台为“
\n
”
%r
输出自应用启动到输出该
log
信息耗费的毫秒数
%t
输出产生该日志事件的线程名
%d
输出日志时间点的日期或时间,默认格式为
ISO8601
,也可以在其后指定格式,比如:
%d{yyy MMM dd HH:mm:ss,SSS}
,输出类似:
2002
年
10
月
18
日
22
:
10
:
28
,
921
%l
输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
4
、读取配置文件
其语法为:
BasicConfigurator.configure ()
:
自动快速地使用缺省
Log4j
环境。
PropertyConfigurator.configure ( String configFilename)
:读取使用
Java
的特性文件编写的配置文件。
DOMConfigurator.configure ( String filename )
:读取
XML
形式的配置文件。
log4j
配置,一般可以采用两种方式
.properties
和
.xml
。
一、
log4j.properties
#
设置对应的级别
INFO,DEBUG,WARN,ERROR
和输出地
A1
,
A2
log4j.category.com.test =ERROR,A1
log4j.category.com.test=INFO, A2
###
设置输出地
A1
,为
ConsoleAppender(
控制台
) ##
log4j.appender.A1=org.apache.log4j.ConsoleAppender
###
设置
A1
的输出布局格式
PatterLayout(
可以灵活地指定布局模式)
##
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
###
设置输出地
A2
到文件(文件大小到达指定尺寸的时候产生一个新的文件)
##
log4j.appender.A2=org.apache.log4j.RollingFileAppender
###
文件位置
##
log4j.appender.A2.File=C:/log4j/log.html
###
文件大小
##
log4j.appender.A2.MaxFileSize=500KB
log4j.appender.A2.MaxBackupIndex=1
##
指定采用
html
方式输出
log4j.appender.A2.layout=org.apache.log4j.HTMLLayout
二、
log4j.xml
<?xml version="1.0" encoding="GB2312" ?>
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="com.test.all" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="
C:/log4j/log.
log" />
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="false" />
<param name="MaxBackupIndex" value="10" />
<!-- 设置输出文件项目和格式 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
</layout>
</appender>
<appender name="com.test.file " class="org.apache.log4j.RollingFileAppender">
<param name="File" value="
C:/log4j/output
.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
</layout>
</appender>
<logger name="test.log">
<level value="debug" /><!-- 设置级别 -->
<appender-ref ref="com.test.file" /><!-- 与前面的通道id相对应 -->
</logger>
<root> <!-- 设置接收所有输出的通道 -->
<appender-ref ref=" com.test.all" /><!-- 与前面的通道id相对应 -->
</root>
</log4j:configuration>
三、配置文件加载方法:
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
public class Log4jApp {
public static void main(String[] args) {
DOMConfigurator.configure("
C:/log4j/
log4j.xml");
//PropertyConfigurator.configure("
C:/log4j/
log4j.properties");
Logger log=Logger.getLogger("com.test");
log.info("Testing log.info()");
}
}
posted on 2006-08-14 22:33
Lizzie 阅读(1281)
评论(0) 编辑 收藏 所属分类:
专业积木