1.需要的相关pom依赖;
<slf4j.version>1.7.5</slf4j.version>
<logback.version>1.0.13</logback.version>
<!-- ################ 日志框架 begin ############### -->
<!-- slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- logback -->
<!-- <dependency>-->
<!-- <groupId>ch.qos.logback</groupId>-->
<!-- <artifactId>logback-core</artifactId>-->
<!-- <version>${logback.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-access</artifactId>-->
<!-- <version>${logback.version}</version>-->
<!-- </dependency>-->
<!-- ################ 日志框架 end ############### -->
2.logback.xml文件;
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!-- 日志文件输出到目录 -->
<property name="LOG_DIR" value="${catalina.base}/Logs" />
<!-- 日志文件前缀 -->
<property name="LOG_PREFIX" value="appname" />
<!-- 默认日志输出格式 -->
<property name="LOG_MSG"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c-%L] - %m%n" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${LOG_MSG}</pattern>
</encoder>
</appender>
<!-- DEBUG日志输出 -->
<appender name="DEBUG_LOG"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/${LOG_PREFIX}_debug.log</file>
<!-- 临界值过滤器,过滤掉低于debug的日志-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/${LOG_PREFIX}_debug.%d{yyyy-MM-dd}.log
</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>${LOG_MSG}</pattern>
</encoder>
</appender>
<!-- INFO日志输出 -->
<appender name="INFO_LOG"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/${LOG_PREFIX}_info.log</file>
<!-- 使用过滤器,仅仅接收info日志级别的信息到info日志,高于该级别的日志,也不进入 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/${LOG_PREFIX}_info.%d{yyyy-MM-dd}.log
</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>${LOG_MSG}</pattern>
</encoder>
</appender>
<!-- ERROR日志输出 -->
<appender name="ERROR_LOG"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/${LOG_PREFIX}_error.log</file>
<!-- 使用过滤器,仅仅接收error日志级别的信息到error日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/${LOG_PREFIX}_error.%d{yyyy-MM-dd}.log
</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>${LOG_MSG}</pattern>
</encoder>
</appender>
<!-- 关闭org包开头的的debug和info日志,不建议开启该配置,以便观察三方组件-->
<logger name="org" level="INFO" />
<logger name="io.netty" level="INFO" />
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="DEBUG_LOG" /> <!-- 因为使用临界值过滤器,info,error等级别的日志,都会进入debug日志文件中,当root设置为debug的时候,所有的日志都会进入debug日志文件 -->
<appender-ref ref="INFO_LOG" />
<appender-ref ref="ERROR_LOG" />
</root>
</configuration>
3.项目中具体使用;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static Logger logger = LoggerFactory.getLogger(TestDate.class);
logger.info("info:[{}]",变量);
logger.error("error");
logger.debug("debug");
4.可以参考;
可参考logback详解