引用slf4j和logback的依赖,尤其是logback-ext-spring ,是Logback对于Spring的扩展:
<dependency >
<groupId > org.slf4j</groupId >
<artifactId > slf4j-api</artifactId >
<version > ${slf4j.version}</version >
</dependency >
<dependency >
<groupId > ch.qos.logback</groupId >
<artifactId > logback-classic</artifactId >
<version > ${logback.version}</version >
</dependency >
<dependency >
<groupId > ch.qos.logback</groupId >
<artifactId > logback-core</artifactId >
<version > ${logback.version}</version >
</dependency >
<dependency >
<groupId > org.logback-extensions</groupId >
<artifactId > logback-ext-spring</artifactId >
<version > ${logback-ext-spring.version}</version >
</dependency >
定义Listener,作用是在项目启动时初始化Logback组件:
import ch.qos.logback.ext.spring.web.WebLogbackConfigurer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class LogbackListener implements ServletContextListener {
@Override
public void contextInitialized (ServletContextEvent sce) {
System.setProperty("customSystemProperty" , "xxx" );
WebLogbackConfigurer.initLogging(sce.getServletContext());
}
@Override
public void contextDestroyed (ServletContextEvent sce) {
WebLogbackConfigurer.shutdownLogging(sce.getServletContext());
}
}
在web.xml中声明LogbackListener,可指定logback.xml文件的路径:
<context-param >
<param-name > logbackConfigLocation</param-name >
<param-value > classpath:logback.xml</param-value >
</context-param >
<listener >
<listener-class > com.yjy.listener.LogbackListener</listener-class >
</listener >
自定义logback.xml,声明日志格式、存放路径等:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration >
<property name ="LOG_HOME" value ="/export/logs/spring-framework-demo/" />
<property name ="APP_NAME" value ="spring-framework-demo" />
<appender name ="STDOUT" class ="ch.qos.logback.core.ConsoleAppender" >
<encoder >
<pattern > ${APP_NAME}-${customSystemProperty}: %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %p - %c %method %m%n</pattern >
</encoder >
</appender >
<appender name ="FILE" class ="ch.qos.logback.core.rolling.RollingFileAppender" >
<rollingPolicy class ="ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
<FileNamePattern > ${LOG_HOME}${APP_NAME}.%d{yyyy-MM-dd}.log.gz</FileNamePattern >
<MaxHistory > 30</MaxHistory >
</rollingPolicy >
<encoder >
<pattern > ${APP_NAME}: %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %p - %c %method %m%n</pattern >
</encoder >
</appender >
<root >
<level value ="INFO" />
<appender-ref ref ="STDOUT" />
<appender-ref ref ="FILE" />
</root >
</configuration >