log4j配置步骤及说明
#配置根Loggerlog4j.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有以下几种:
Layout:日志输出格式,Log4j提供的layout有以下几种:
当Layout设置为PatternLayout时,可以灵活的指定布局,如下:
二、配置一个简单的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.
?
?
?
?