详细信息请参照 如何使用Log4j? http://www.blogjava.net/rickhunter/articles/28133.html此文章写的比较详细。
先看我的log4j的配置:
Log4j.properties 放在src/resource目录下,会自动加载log4j配置(即使你使用junit测试此配置文件还会加载)。
# Global Log Level(OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL)
##假如是debug级别,OFF,FATAL,ERROR,WARN,INFO,DEBUG的将会打印
##假如是INFO级别,OFF,FATAL,ERROR,WARN,INFO的将会打印
log4j.rootCategory=DEBUG, stdout , R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\myLog.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
1log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
log4j.logger.com.neusoft=DEBUG
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.net.sf.navigator=ERROR
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=WARN
log4j.logger.org.displaytag=ERROR
log4j.logger.org.springframework=DEBUG
log4j.logger.com.ibatis.db=WARN
log4j.logger.org.apache.velocity=FATAL
log4j.logger.com.canoo.webtest=WARN
log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.logicalcobwebs=WARN
里面的详细语法请参照上面的链接,这里不做重复性叙述。
我在此说明两点:
(1),在项目中我们经常可以看到这样的代码:
if (logger.isDebugEnabled()) {
logger.debug(message);
}
为什么不直接logger.debug(message);而先判断有没有开启debug模式呢?
我们参照log4j源码分析:
org.apache.log4j. Categoryy
# Global Log Level(OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL)
##假如是debug级别,OFF,FATAL,ERROR,WARN,INFO,DEBUG的将会打印
##假如是INFO级别,OFF,FATAL,ERROR,WARN,INFO的将会打印
log4j.rootCategory=DEBUG, stdout , R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\myLog.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
1log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
log4j.logger.com.neusoft=DEBUG
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.net.sf.navigator=ERROR
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=WARN
log4j.logger.org.displaytag=ERROR
log4j.logger.org.springframework=DEBUG
log4j.logger.com.ibatis.db=WARN
log4j.logger.org.apache.velocity=FATAL
log4j.logger.com.canoo.webtest=WARN
log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.logicalcobwebs=WARN
以下是debug()的源码:
public void debug(Object message) {
if(repository.isDisabled(Level.DEBUG_INT))
return;
if(Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel())) {
forcedLog(FQCN, Level.DEBUG, message, null);
}
}
表面看logger.isDebugEnabled和logge
repository.isDisabled(Level.
log4j.appender.CONSOLE.layout=
对于layout log4j提供了以下4种
org.apache.log4j.HTMLLayout(以H
org.apache.log4j.
org.apache.log4j.
org.apache.log4j.TTCCLayout(
在实际应用中这四种可能不能满足我们的需求:
比如
Public class MyLayout extends PatternLayout{
@Override
Public String format(LoggingEvent event){
…这里你可以信用卡进行加密再记录日志日志
Supper.format(event);
}
}
这样我们在需要记录信用卡日志的时候就可以log4j.appender.CONSOLE.layout=
这样记录日志的时候就会调用你复写的MyLayout。format()来按照你的想法来记录日志了。
希望我对log4j的理解对大家有帮助,发现有错的我会改掉的,有需要分享的我会写进来的。