${LOG_PATH}/log_error.log
${LOG_PATH}/log-error-%d{yyyy-MM-dd}.%i.log
2MB
true
%-5p [%d] %C:%L - %m %n
utf-8
error
ACCEPT
DENY
${LOG_PATH}/log_warn.log
${LOG_PATH}/log-warn-%d{yyyy-MM-dd}.%i.log
2MB
true
%-5p [%d] %C:%L - %m %n
utf-8
WARN
ACCEPT
DENY
${LOG_PATH}/log_info.log
${LOG_PATH}/log-info-%d{yyyy-MM-dd}.%i.log
2MB
true
%-5p [%d] %C:%L - %m %n
utf-8
INFO
ACCEPT
DENY
${LOG_PATH}/log_debug.log
${LOG_PATH}/log-debug-%d{yyyy-MM-dd}.%i.log
2MB
true
%-5p [%d] %C:%L - %m %n
utf-8
DEBUG
ACCEPT
DENY
System.out
%-5p [%d] %C:%L - %m %n
utf-8
DEBUG
LogBack是由log4j的创始人开发的一个日志组件,用于替代log4j。LogBack的架构设计足够通用,可适用于不同的环境,目前LogBack分为三个模:lobback-core,logback-classic和logback-access。
core模块是其它两个模块的基础,classic是core的扩展,是log4j巨大改进的版本。LogBack-classic本身实现了SL4J的API,因此可以很容易的在logback与其它日志系统之间转换,例如log4j、JDK1.4中的java.util.logging(JUL)。第三个模块access,它集成了Servlet容器,提供了通过HTTP访问日志的功能,若了解access可访问其独立文档http://logback.qos.ch/access.html。
LogBack的日志级别有trace、debug、info、warn、error,关于基级别,可参考官方文档(http://logback.qos.ch/manual/architecture.html)。
ch.qos.logback.core.Appender接口,常用的有ConsoleAppender、FileAppender和RollingFileAppender,类图如下:
项目中使用的Appender有两种:ConsoleAppender和RollingFileAppender
ConsoleAppender:主要是将日志信息输出到控制上,在上面的日志文件中,stdout的Append就是ConsoleAppender
RollingFileAppender:是按日期滚动记录日志,例如RollingFileAppender将日志记录到log.txt文件中,一旦设置的条件满足,就将日志信息记录到另一个文件中,它继承FileAppender。与RollingFileAppender交互的两个重要组件分别是:RollingPolicy和TriggeringPolicy。前者负责滚动神马,后者负责神马时候滚动。
任何时候使用,RollingFileAppender都必须有RollingFileAppender和TriggeringPolicy的配置,但是如果它的RollingPolicy也实现了TriggeringPolicy接口,只需要指定前者即可。此点需要注意:笔者在使用时,就忽略这一点,导致日志滚动不成功。其具体属性如下:(以项目中使用到的为例 )
mylog.txt
mylog-%d{yyyy-MM-dd}.%i.txt
100MB
%msg%n
test.log
test.%i.log.zip
1
3
5MB
%-4relative [%thread] %-5level %logger{35} - %msg%n
INFO
ACCEPT
DENY
%-4relative [%thread] %-5level %logger{30} - %msg%n
ThresholdFilter:指定下限级别,低于此级别的事件将被拒绝,如果项目中使用的配置文件中的stdout的配置,下面为官方提供的配置:
INFO
%-4relative [%thread] %-5level %logger{30} - %msg%n
官方提供了其它的Filter,也可以自己实现自己的Filter,具体参考官方文档。
ch.qos.logback
logback-core
1.0.13
ch.qos.logback
logback-classic
1.0.13
org.slf4j
jcl-over-slf4j
1.7.0
ch.qos.logback
logback-access
1.0.13
3、代码区别
if (logger.isInfoEnabled()) {
logger.info("***** BaseAuthoritiesResourcesServiceImpl.getList() method begin*****");
}
使用LogBack之后,可将if判断去掉,如下:
logger.debug("***** BaseDictionaryServiceImpl.delete() method begin*****");
如果
日志级别高于Debug,则这一行日志信息将不会输出。