###引入jar包
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<logback.version>1.1.7</logback.version>
<slf4j.version>1.7.21</slf4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<scope>compile</scope>
</dependency>
<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>
</dependencies>
###logback.xml(放在classpath目录下)
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="5 minutes">
<!-- Properties -->
<property name="logPattern" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}][%-5level][%5thread][%logger] %msg%n" />
<property name="logFolder" value="./bizfeplogs" />
<!-- Appenders -->
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${logPattern}</pattern>
</encoder>
</appender>
<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>F://${logFolder}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logFolder}/info.%d{yyyy-MM-dd}.gz</fileNamePattern>
<!-- keep 360 days worth of history -->
<MaxHistory>360</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${logPattern}</pattern>
</encoder>
</appender>
<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<file>F://${logFolder}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logFolder}/error.%d{yyyy-MM-dd}.gz</fileNamePattern>
<!-- keep 360 days worth of history -->
<MaxHistory>360</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${logPattern}</pattern>
</encoder>
</appender>
<appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<file>F://${logFolder}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logFolder}/debug.%d{yyyy-MM-dd}.gz</fileNamePattern>
<!-- keep 360 days worth of history -->
<MaxHistory>360</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${logPattern}</pattern>
</encoder>
</appender>
<appender name="myAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>F://${logFolder}/my.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logFolder}/my.%d{yyyy-MM-dd}.gz</fileNamePattern>
<!-- keep 360 days worth of history -->
<MaxHistory>360</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${logPattern}</pattern>
</encoder>
</appender>
<logger name="myLog" level="INFO" additivity="false">
<appender-ref ref="myAppender" />
</logger>
<!-- Loggers -->
<root level="DEBUG">
<appender-ref ref="debugAppender" />
<appender-ref ref="consoleAppender" />
<appender-ref ref="infoAppender" />
<appender-ref ref="errorAppender" />
</root>
</configuration>
###测试
###结果分析
###小结
1:logger相当于小的root,它的additivity设置为true的时候,受root的管理,过滤级别以logger为准,文件除了会输出到logger自身指定的appender-ref外,还会将日志输出到root指定的appender-ref(文件/控制台)中。
2:root的过滤级别是什么,所有的appender-ref中就会输出什么级别的日志。如果root的级别是INFO,logger的级别是DEBUG,则logger输出DEBUG,root下的全部是INFO,程序中为DEBUG级别的日志全部不输出。