各位,我在用springboot整合logback时
开启多线程后,日志总是被切成好多的gz压缩包,我的按天归档的策略本是30天每天归档,可是当我代码里出现多线程逻辑时,打出来的日志文件当时就被切成了好多个.gz压缩包,可读性非常差
我定义了下面这样的一个日志文件,然后在多线程逻辑里传进去,就打出来好多份压缩包了
```xml
<appender name="lcLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_PATH}/lifecycle/${LOG_FILE}_lc.logFile>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/lifecycle/${LOG_FILE}_lc_%d{yyyy-MM-dd}.%i.gzfileNamePattern>
<maxFileSize>${LOG_FILE_MAX_SIZE}maxFileSize>
<maxHistory>${LOG_FILE_MAX_HISTORY}maxHistory>
rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERRORlevel>
<onMatch>ACCEPTonMatch>
<onMismatch>DENYonMismatch>
filter>
<encoder>
<charset>UTF-8charset>
<pattern>${FILE_LOG_PATTERN}pattern>
encoder>
appender>
```
当您启用多线程时,您的appender的滚动策略似乎没有像您期望的那样运行。
一种可能性是,当启用多线程时,由于生成的日志事件量增加,SizeAndTimeBasedRollingPolicy更频繁地滚动到新文件。您可以尝试增加maxFileSize>元素设置为更大的值,以查看是否有帮助。
另一种可能是%i转换模式在fileNamePattern>元素导致滚动策略为每个日志事件滚动到一个新文件。%i模式指定当前文件的迭代,当启用多线程时,它可能会更频繁地递增。您可以尝试删除%i模式或将其替换为不同的模式,例如%d{yyyy-MM-dd},以查看这是否有帮助。
检查登录回文档以确保为所需的滚动策略使用了正确的配置选项和模式也是一个好主意。