logback 指定每隔一段时间创建一个日志文件

本文介绍了如何在logback 1.2.3版本中自定义配置,以实现每隔10分钟创建一个新的日志文件。通过分析logback的源码和触发策略,发现可以通过扩展`TimeBasedRollingPolicy`并设置`multiple`属性为10来达到目的。在无日志写入时,仅启动服务器会创建当前时间的日志文件,日志数据写入时才会触发新的日志文件创建。
摘要由CSDN通过智能技术生成

我使用的logback版本是1.2.3

目前logback支持根据时间来配置产生日志文件,但是只支持每周,每天,每个小时,每分钟等创建一个文件,配置如下:

<appender name="SYSTEM"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.home}/system.log</file>

        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover ,每天生成一份日志文件-->
            <fileNamePattern>${log.home}/%d{yyyy-MM-dd}/system.%d{yyyy-MM-dd}.log
            </fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>%d{HH:mm:ss} %-5level [%thread][%file:%line] : %msg%n
            </pattern>
        </encoder>
    </appender>

但是需求是无法想象的,像突然又要求每隔一段时间之后生成一个配置文件,比如logback每隔10分钟生成一个日志文件,或每隔30分钟生成一份日志文件,每隔2个小时生成一个日志配置文件等。

下面以每隔10分钟生成一个日志文件,首先看一个每分钟生成一个配置文件 的配置

<appender name="SYSTEM"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.home}/system.log</file>

        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover ,每天分钟生成一份日志文件-->
            <fileNamePattern>${log.home}/%d{yyyy-MM-dd}/system.%d{yyyy-MM-dd-HH-mm}.log
            </fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>

        <encoder>
            
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过在 logback-spring.xml 文件中配置 `rollingPolicy` 和 `fileNamePattern` 实现每天单独一个日志文件的功能。具体配置如下: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 日志输出文件的路径 --> <file>/var/log/myapp/myapp.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天生成一个文件 --> <fileNamePattern>/var/log/myapp/myapp.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 保留最近7天的日志文件 --> <maxHistory>7</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="FILE" /> </root> </configuration> ``` 在上面的配置中,`rollingPolicy` 的 `class` 属性设置为 `ch.qos.logback.core.rolling.TimeBasedRollingPolicy`,表示按时间分割日志文件。`fileNamePattern` 属性指定日志文件的命名格式,由于我们想要每天生成一个文件,因此使用 `%d{yyyy-MM-dd}` 格式,表示以年、月、日为单位进行分割。 以上面的配置为例,每天会生成一个名为 `/var/log/myapp/myapp.2021-01-01.log` 的日志文件,如果在同一天内多次启动应用程序,则会向同一个日志文件中追加日志。如果跨天启动应用程序,则会生成一个新的日志文件。 注意,`maxHistory` 属性表示最多保留多少天的历史日志文件,超过该时间日志文件将被自动删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值