![](http://mmbiz.qpic.cn/mmbiz_jpg/ow6przZuPIENb0m5iawutIf90N2Ub3dcPuP2KXHJvaR1Fv2FnicTuOy3KcHuIEJbd9lUyOibeXqW8tEhoJGL98qOw/640?)
阅读本文,你将了解到
配置文件logback-spring.xml
SpringBoot工程自带logback和slf4j的依赖,所以重点放在编写配置文件上,需要引入什么依赖,日志依赖冲突统统都不需要我们管了。
logback框架会默认加载classpath下命名为logback-spring或logback的配置文件。将所有日志都存储在一个文件中文件大小也随着应用的运行越来越大并且不好排查问题,正确的做法应该是将error日志和其他日志分开,并且不同级别的日志根据时间段进行记录存储。
xml version="1.0" encoding="utf-8"?>
resource="logback.properties"/>
name="CONSOLE-LOG" class="ch.qos.logback.core.ConsoleAppender">
class="ch.qos.logback.classic.PatternLayout">
[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n
name="INFO-LOG"
class="ch.qos.logback.core.rolling.RollingFileAppender">
class="ch.qos.logback.classic.filter.LevelFilter">
ERROR
DENY
ACCEPT
[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
${LOG_INFO_HOME}//%d.log
30
name="ERROR-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
class="ch.qos.logback.classic.filter.ThresholdFilter">
ERROR
[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
${LOG_ERROR_HOME}//%d.log
30
level="info">
ref="CONSOLE-LOG" />
ref="INFO-LOG" />
ref="ERROR-LOG" />
标签说明
标签,必填标签,用来指定最基础的日志输出级别
标签,通过使用该标签指定日志的收集策略
标签,通过使用该标签指定过滤策略
标签,使用该标签下的标签指定日志输出格式
标签指定收集策略,比如基于时间进行收集
![](http://mmbiz.qpic.cn/mmbiz_png/8Jeic82Or04mTavwuatKnZZH4qBPBLOiazfsMfZWoicd8qesntJSpQX5GSrp9Zpz9ULAeSCPZMicgFicb2qJIzQDuFg/640?wx_fmt=png)
logback 高级特性异步输出日志
之前的日志配置方式是基于同步的,每次日志输出到文件都会进行一次磁盘IO。采用异步写日志的方式而不让此次写日志发生磁盘IO,阻塞线程从而造成不必要的性能损耗。异步输出日志的方式很简单,添加一个基于异步写日志的 appender
,并指向原先配置的 appender
即可
name="ASYNC-INFO" class="ch.qos.logback.classic.AsyncAppender">
0
256
ref="INFO-LOG"/>
name="ASYNC-ERROR" class="ch.qos.logback.classic.AsyncAppender">
0
256
ref="ERROR-LOG"/>
异步输出日志性能测试
既然能提高性能的话,必须进行一次测试比对,同步和异步输出日志性能到底能提升多少倍?
服务器硬件
测试工具
同步输出日志
测试结果