java - Logback 滚动文件附加程序 - 我可以将多个日志压缩到一个文件中吗?

标签 java logback rollingfileappender

我当前的 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 等。

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

最佳答案

是的,您可以使用带有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 设置较高的值,以便这些约束都不能最小化

关于java - Logback 滚动文件附加程序 - 我可以将多个日志压缩到一个文件中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24119032/

相关文章:

java - 如何在日志文件名中附加日期,例如 log_12.12.2012.log?

java - Junit Test 用于在 LDAP 连接测试中测试 NamingEnumeration 中的数据

java - 用于 64 位 Windows 的 JAI 和 ImageIO

java - 在 XML 中设置 JavaBeans 集合属性

logback - 何时使用 JoranConfigurator?

具有静态文件扩展名的 Log4Net 复合 RollingFileAppender

java - Firebase 无法显示实时数据库中的名称

java - 如何自动化 IntelliJ IDEA 11 项目的 Java 构建过程?

java - 使用 Logback 仅记录前 N 行

windows - Log4net 滚动文件具有旧的修改和访问时间戳