【问题标题】:Logback rolling file appender - can I zip many logs into one file?Logback 滚动文件附加程序 - 我可以将许多日志压缩到一个文件中吗?
【发布时间】:2014-06-09 19:43:27
【问题描述】:

我当前的 logback 配置如下所示:

<appender name="rolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>${log.dir}/${log.package}.log</file>
  <encoder>
    <Pattern>${log.pattern}</Pattern>
  </encoder>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>${log.dir}/${log.package}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
      <!-- or whenever the file size reaches 1MB. -->
      <maxFileSize>1MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    <!-- Keep no more than 3 months data. -->
    <maxHistory>90</maxHistory>
    <cleanHistoryOnStart>true</cleanHistoryOnStart>
  </rollingPolicy>
</appender>

这很好用,但会创建多个 zip 文件 ...1.zip ...2.zip 等。

有什么方法可以将压缩文件名指定为${log.dir}/${log.package}.%d{yyyy-MM-dd}.log.zip,但压缩文件中的文件名指定为${log.dir}/${log.package}.%i.log? IE。每天制作一个 zip 文件,但每次文件达到 1mb 时,我将其压缩为 ....1.log...2.log 等。

【问题讨论】:

    标签: java logback rollingfileappender


    【解决方案1】:

    是的,您可以使用带有 FixedWindowRollingPolicy 的 rollingfileappender 将多个文件添加到 zip 文件中。

    <appender name="ErrorLogs"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
            <target>System.err</target>     
            <file>${log_location}{Error_filename}</file>
    
            <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
                <fileNamePattern>${log_location}{ERR_Zip}</fileNamePattern>
                <minIndex>1</minIndex>
                <maxIndex>3</maxIndex>
            </rollingPolicy>
            <triggeringPolicy
                class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <maxFileSize>${maxFileSize}</maxFileSize>
            </triggeringPolicy>
            <encoder>
                <pattern>${Default_Pattern}</pattern>
            </encoder>
        </appender>
    

    因为你不能同时使用基于时间的滚动和基于大小的滚动,我的建议是为 maxfilesize 设置高值,这样这些约束都不能被最小化

    【讨论】:

    • 有什么方法可以同时做基于时间的和固定的窗口吗? IE。每天一个拉链并触发一个固定的大小窗口?
    • 没有直接的方法可以做到这一点,但是我们可以做的是增加您的最大文件大小,将您的 maxindexsize 增加到 25,假设您的日志文件写入 25MB 的数据并且您的 maxsize 是 1 MB,当它达到25 个日志文件,每个 1 MB,然后您的日志文件将被压缩到一个文件中。
    • 请参考logback作者cekistackoverflow.com/questions/7934829/…987654321@回复的这篇帖子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多