高手的存在,就是让服务10亿人的时候,你感觉只是为你一个人服务......

Logback 异步日志

目录
  1. 1. 异步日志配置

很多系统的logback配置未启用异步输出日志的方式,在高并发时容易造成大量日志线程阻塞,导致系统TPS压上不去。


异步日志配置

logback.xml中关于异步日志配置方式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!-- oss系统日志 -->
<appender name="ossAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">

<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<file>${log.path}/oss.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/oss.%d{yyyy-MM-dd-HH}.log
</fileNamePattern>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date|%thread|%X{invokeNo}|%level|%logger{0}||%method|%msg%n
</pattern>
</encoder>
</appender>

<!--异步日志配置-->
<appender name="ossAppender_ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>1024</queueSize>
<neverBlock>true</neverBlock>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="ossAppender" />
</appender>

经压测验证,使用异步日志配置后,未发现日志丢失情况,额外消耗的内存很少。系统各接口性能提升4倍以上。