l
Log4j
输出源的附加特性说明:
日志记录器C的日志语句的输出将定向到
C和它的祖先中的所有的输出源。这是条款“输出源的附加特性(appender additivity)”的意图.
然而,假如有一个日志记录器
C的祖先,叫做P,有一个附加标识被设置为false,然后C的输出将被定向到C和直到C的祖先P(包括P)中的所有的输出源,但是不包括P的祖先的中的任何输出源。
日志记录器有它自己附加特性,该特性被默认设置为
true
下表展示了一个例子:
日志记录器
|
添加的输出源
|
附加特性标识
|
输出目标
|
评论
|
root
|
A1
|
not applicable
|
A1
|
根日志记录器是匿名的,但是可以用
Logger.getRootLogger()
方法来存取。根日志记录器没有默认输出源。
|
x
|
A-x1, A-x2
|
true
|
A1, A-x1, A-x2
|
x
和根的输出源
|
x.y
|
none
|
true
|
A1, A-x1, A-x2
|
x
和根的输出源
|
x.y.z
|
A-xyz1
|
true
|
A1, A-x1, A-x2, A-xyz1
|
x.y.z
、
x
和根的输出源
|
security
|
A-sec
|
false
|
A-sec
|
由于附加标识被设置为
false
,没有输出源聚集
|
security.access
|
none
|
true
|
A-sec
|
由于安全中附加标识被设置为
false
,所以仅仅有安全的输出源。
|
l
在
log4j
中指定配置文件时,默认是要放在项目的目录下……
package logFourj;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class LogFourjTest {
public static void main(String[] args) {
// TODO 自动生成方法存根
//**这里用PropertyConfigurator.configure方法调的log4j.properties文件要放在logFour 包外,项目下,与logFour包同级**//
//PropertyConfigurator.configure("log4j.properties");
//**这里用PropertyConfigurator.configure方法调的log4j.properties文件时由于指定了在logFourj目录下,于是可以将log4j.properties文件放在调用类LogFourjTest的同级目录下**//
PropertyConfigurator.configure("logFourj/log4j.properties");
Logger logger = Logger.getLogger(LogFourjTest.class);
logger.debug("i am debug");
logger.info("i am info");
logger.warn("i am warn");
logger.error("i am error");
logger.fatal("i am fatal");
}
}
l
配置文件如下:
##设置根日志记录器;等号后面依次是
设置级别和
输出源##
log4j.rootLogger=debug, stdout, R
#设置输出源
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#设置布局器
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller''s file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
#设置cn.itcast.yao子记录器的信息
log4j.logger.cn.itcast.yao=WARN,A1
#设置additivity属性值为FALSE, 输出将被定向到
cn.itcast.yao
的所有子子孙孙和直到
cn.itcast.yao(包括
cn.itcast.yao)中的所有的输出源,但是不包括
cn.itcast.yao的祖先的中的任何输出源。
log4j.additivity.cn.itcast.yao=
FALSE
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
l
在应用类中:
#可以直接用
cn.itcast.yao设置其所属辈份
Logger logger = Logger.getLogger("cn.itcast.yao");