log4j配置步骤及说明
#配置根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?
其中 [level] 是日志输出级别,如下:
OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
?
Appender 为日志输出目的地,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)Layout:日志输出格式,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)当Layout设置为PatternLayout时,可以灵活的指定布局,如下:
%m?? 输出代码中指定的消息
%p?? 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL?
%r?? 输出自应用启动到输出该log信息耗费的毫秒数?
%c?? 输出所属的类目,通常就是所在类的全名?
%t?? 输出产生该日志事件的线程名?
%n?? 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”?
%d?? 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy?MMM?dd?HH:mm:ss , SSS},输出类似:2002年10月18日? 22 : 10 : 28 , 921 ?
%l?? 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )?
二、配置一个简单的log4j.properties:
在CLASSPATH下建立log4j.properties,配置内容如下:
log4j.rootLogger=INFO, stdout , R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= [TS] %p [%t] %C.%M(%L) | %m%n
?
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=路径/R-name.log
log4j.appender.R.Threshold=INFO
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
?
log4j.logger.com.java.hx.common=INFO,R
log4j.logger.org.springframework=ERROR
?
?
三、对于几个特定的地方做一个详细说明:
1、有很多地方讲到rootLogger,还有的地方配置的是rootCategory。查看了下资料,Log4j官方的API中这样描述:
?
public class Categoryextends java.lang.Objectimplements AppenderAttachable
This class has been deprecated and replaced by the?Logger?subclass. It will be kept around to preserve backward compatibility until mid 2003.
Logger?is a subclass of Category, i.e. it extends Category. In other words, a logger?is?a category. Thus, all operations that can be performed on a category can be performed on a logger. Internally, whenever log4j is asked to produce a Category object, it will instead produce a Logger object. Log4j 1.2 will?never?produce Category objects but only?Logger?instances. In order to preserve backward compatibility, methods that previously accepted category objects still continue to accept category objects.
For example, the following are all legal and will work as expected.
???// Deprecated form:
???Category cat = Category.getInstance("foo.bar")
???// Preferred form for retrieving loggers:
???Logger logger = Logger.getLogger("foo.bar")
The first form is deprecated and should be avoided.
There is absolutely no need for new client code to use or refer to the?Category?class.?Whenever possible, please avoid referring to it or using it.
See the?short manual?for an introduction on this class.
See the document entitled?preparing for log4j 1.3?for a more detailed discussion.
?
?
?
?