黑主理事长 2022-12-18 11:25 采纳率: 50%
浏览 23
已结题

springboot整合logback被多线程切成好多文件怎么办?

各位,我在用springboot整合logback时
开启多线程后,日志总是被切成好多的gz压缩包,我的按天归档的策略本是30天每天归档,可是当我代码里出现多线程逻辑时,打出来的日志文件当时就被切成了好多个.gz压缩包,可读性非常差
我定义了下面这样的一个日志文件,然后在多线程逻辑里传进去,就打出来好多份压缩包了


```xml
<appender name="lcLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${LOG_PATH}/lifecycle/${LOG_FILE}_lc.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/lifecycle/${LOG_FILE}_lc_%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
            <maxFileSize>${LOG_FILE_MAX_SIZE}</maxFileSize>
            <maxHistory>${LOG_FILE_MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <charset>UTF-8</charset>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>


```

  • 写回答

1条回答 默认 最新

  • 叫我阿杰好了 优质创作者: Java技术领域 2022-12-18 22:12
    关注

    当您启用多线程时,您的appender的滚动策略似乎没有像您期望的那样运行。

    一种可能性是,当启用多线程时,由于生成的日志事件量增加,SizeAndTimeBasedRollingPolicy更频繁地滚动到新文件。您可以尝试增加maxFileSize>元素设置为更大的值,以查看是否有帮助。

    另一种可能是%i转换模式在fileNamePattern>元素导致滚动策略为每个日志事件滚动到一个新文件。%i模式指定当前文件的迭代,当启用多线程时,它可能会更频繁地递增。您可以尝试删除%i模式或将其替换为不同的模式,例如%d{yyyy-MM-dd},以查看这是否有帮助。

    检查登录回文档以确保为所需的滚动策略使用了正确的配置选项和模式也是一个好主意。

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 专家已采纳回答 12月21日
  • 创建了问题 12月18日