需要的包
<!--logback-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
配置文件src下面创建logback.xml
注意,一个appender就是一个配置,我用了控制台输出和文件保存压缩的两个appender,并且设置了这两个的打印级别
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--配置集中管理属性,可以根据name直接使用value值
%5: level
%d{yyyy-MM-dd}: 时间格式
%c 完整类名
%M 为method
%L 行号
%thread 线程名称
%m或者%msg 具体信息
%n 换行-->
<property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"></property>
<!--控制台日志输出appender-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--控制输出流对象.默认system.out 可以改成红色 system.err-->
<!--<target>System.err</target>-->
<target>System.out</target>
<!--日志消息格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
</appender>
<!--日志文件输出-->
<appender name="file" class="ch.qos.logback.core.FileAppender">
<!--日志文件保存路径-->
<file>D:/logs/kanghubao.log</file>
<!--日志消息格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
</appender>
<!--html 格式的文件输出-->
<appender name="htmlFile" class="ch.qos.logback.core.FileAppender">
<!--日志文件保存路径-->
<file>D:/logs/kanghubao.html</file>
<!--配置html格式配置-->
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%-5level%d{yyyy-MM-dd HH:mm:ss.SSS}%c%M%L%thread%m}</pattern>
</layout>
</encoder>
</appender>
<!--日志拆分压缩-->
<appender name="rollFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志文件保存路径-->
<file>D:/logs/roll_kanghubao.log</file>
<!--日志消息格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
<!--指定拆分规则-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--按照时间和压缩格式声明拆分的文件名-->
<fileNamePattern>D:/logs/rolling.%d{yyyy-MM-dd-HH-mm}.log%i.gz</fileNamePattern>
<!--按照文件大小拆分-->
<maxFileSize>1MB</maxFileSize>
</rollingPolicy>
<!--日志级别过滤器-->
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!--<!–日志过滤规则–>-->
<!--<level>DEBUG</level>-->
<!--<!–如果是DEBUG级别就剔除–>-->
<!--<onMatch>DENY</onMatch>-->
<!--<onMismatch>ACCEPT</onMismatch>-->
<!--</filter>-->
<!--第二种过滤器,过滤掉低于某个级别的日志-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!--root logger 配置-->
<root level="ALL">
<!--定义调用哪个appender配置-->
<appender-ref ref="console" />
<appender-ref ref="rollFile" />
</root>
</configuration>
优化异步调用日志,在原有基础上添加一个异步appender,并在其中引用rollFile这个appender,其次,在root中调用异步这个appender就可以了
<!--异步调用appender,再在root中调用async即可异步使用rollFile这个appender-->
<appender name="async" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="rollFile" />
</appender>
<!--root logger 配置-->
<root level="ALL">
<!--定义调用哪个appender配置-->
<appender-ref ref="console" />
<appender-ref ref="async" />
</root>