Logback是由log4j创始人Ceki Gülcü设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。——百度百科
经过查阅资料,这里分享一个简单的日志功能。
Maven项目架构:Spring3.2.4+Struts2.3.1.1+Myabtis3.2.2,最少引入jar包为
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.1</version>
</dependency>
logback.xml配置文件如下,仅配置了控制台和文件输出功能
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8"> <!-- encoder 可以指定字符集,对于中文输出有意义 -->
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>TRACE</level>
</filter>
<!-- 可让每天产生一个日志文件,最多 10 个,自动回滚 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>F:/log/yngisht-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<!-- 输出到控制台和文件,可定义更多的 Appender -->
<root level="DEBUG">
<appender-ref ref="Console" />
<appender-ref ref="RollingFile"/>
</root>
<!-- 下面配置一些第三方包的日志过滤级别,用于避免刷屏 -->
<logger name="org.springframework" level="WARN"/>
<logger name="com.opensymphony" level="WARN"/>
<logger name="org.apache" level="WARN"/>
</configuration>
Logback官方提供了一个jar包,就是上面引入的logback-ext-spring-0.1.1.jar,用于与Spring的整合,据说要求Spring的版本高于3.1.1才能使用。它的配置跟spring结合log4j的配置差不多,同样是在web.xml中配置一个listener,同时配置一个上下文参数,用于指定logback.xml配置文件的路径,具体配置如下:
<context-param>
<param-name>logbackConfigLocation</param-name>
<param-value>WEB-INF/classes/logback.xml</param-value>
</context-param>
<listener>
<listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
</listener>
在程序中还是和以前那样使用,如下所示:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
//据说不用static了
private final Logger log = LoggerFactory.getLogger(XXX.class);
log.debug("hello");
这里只列出了简单日志功能,需要复杂功能请自行探索。
本文参考资料如下:
【飞天奔月出品】一步一步升级配置11: 使用logback+slf4j 替换log4j+slf4j