解决logback无法生成第二天日志的问题

解决logback无法生成第二天日志的问题

之前有写过一篇springboot 配置logback日志,但是存在一个bug,无法生成第二天的日志,解决方案如下:

原代码如下:

<!-- ERROR级别日志 -->
    <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender -->
    <appender name="ERROR"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 过滤器,只记录WARN级别的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志输出位置 可相对、和绝对路径 -->
            <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/error-log.log
            </fileNamePattern>
            <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 -->
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>

        <!-- 按照固定窗口模式生成日志文件,当文件大于20MB时,生成新的日志文件。窗口大小是1到3,当保存了3个归档文件后,将覆盖最早的日志。 -->
        <!-- <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
            <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/.log.zip</fileNamePattern> <minIndex>1</minIndex> 
            <maxIndex>3</maxIndex> </rollingPolicy> -->
        <!-- 查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动 -->
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>10GB</maxFileSize>
        </triggeringPolicy>

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -
                %msg%n</pattern>
        </encoder>
    </appender>

修改之后:

<!-- ERROR级别日志 -->
    <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender -->
    <appender name="ERROR"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 过滤器,只记录WARN级别的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志输出位置 可相对、和绝对路径 -->
            <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/error-log.log
            </fileNamePattern>
            <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 -->
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>

        <!-- 按照固定窗口模式生成日志文件,当文件大于20MB时,生成新的日志文件。窗口大小是1到3,当保存了3个归档文件后,将覆盖最早的日志。 -->
        <!-- <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
            <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/.log.zip</fileNamePattern> <minIndex>1</minIndex> 
            <maxIndex>3</maxIndex> </rollingPolicy> -->
        <!-- 查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动 -->
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>10GB</maxFileSize>
        </triggeringPolicy>

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -
                %msg%n</pattern>
        </encoder>
    </appender>

此次修改,主要是将ch.qos.logback.core.rolling.TimeBasedRollingPolicy调整为ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy。
经测试,第二天日志有正常生成了!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,关于 logback 使用遇到问题解决问题记录,我会尽力回答你的问题。 首先,你需要了解 logback一个开源的 Java 日志框架,它是由 log4j 作者 Ceki Gülcü 所开发的。logback 具有高效、灵活、可扩展等特点,是目前 Java 开发中广泛应用的日志框架之一。 接下来,我会回答你可能遇到的一些问题,并提供相应的解决方案。 1. logback 配置文件无法加载或者加载不正确怎么办? 这可能是因为配置文件的路径设置不正确导致的。你可以检查一下配置文件的路径是否正确,或者将配置文件放在 classpath 下,这样可以保证 logback 能够正确加载配置文件。 2. 如何设置日志输出的级别? logback 支持多种级别的日志输出,包括 TRACE、DEBUG、INFO、WARN、ERROR 等。你可以在配置文件中设置 rootLogger 的 level 属性来控制日志的输出级别,例如: ``` <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> ``` 这里将日志输出级别设置为 INFO。 3. 如何将日志输出到文件中? logback 提供了多种输出方式,其中包括将日志输出到文件中。你可以在配置文件中添加一个 fileAppender,然后将日志输出到指定的文件中,例如: ``` <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>logs/app.log</file> <append>true</append> <encoder> <pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="FILE" /> </root> ``` 这里将日志输出到文件 logs/app.log 中。 4. 如何使用 logback 进行异步日志输出? logback 支持异步日志输出,可以提高日志输出的性能。你可以在配置文件中添加一个 asyncAppender,然后将日志输出到 asyncAppender 中,例如: ``` <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> <queueSize>512</queueSize> <discardingThreshold>0</discardingThreshold> <appender-ref ref="FILE" /> </appender> <root level="INFO"> <appender-ref ref="ASYNC" /> </root> ``` 这里将日志输出到 asyncAppender 中,使用异步方式输出。 以上是 logback 使用中常见的问题解决方案,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值