使用基于大小的归档进行Logback保留n天日志

Ser*_*rik 6 java logging logback

我正在尝试为Java Web应用程序配置日志滚动策略。这是我到目前为止的

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/appLog.%d{yyyy-MM-dd HH}.%i.log.gz
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>7</maxHistory>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
Run Code Online (Sandbox Code Playgroud)

我要在这里实现的是保留过去7天的所有日志,但是只要日志文件达到500MB就会对其进行压缩。

上面显示的Logback配置仅保留最后7个文件,因此,例如,如果有很多日志,则最后一天只能有7个文件。

在这种情况下,如何配置回传以保留过去7天的所有日志?任何帮助都非常感谢。

dav*_*xxx 7

我要在这里实现的是保留过去7天的所有日志,

在这里,您指定一种在小时粒度之前考虑滚动策略的模式:

 <fileNamePattern>${LOG_HOME}/appLog.%d{yyyy-MM-dd HH}.%i.log.gz
Run Code Online (Sandbox Code Playgroud)

fileNamePattern比文件名模式等等。
它还指示翻转频率。

强制性的fileNamePattern属性定义了过渡(存档)日志文件的名称。它的值应包括文件名以及适当放置的%d转换说明符。%d转换说明符可以包含java.text.SimpleDateFormat类指定的日期和时间模式。如果省略了日期和时间模式,则采用默认模式yyyy-MM-dd从fileNamePattern的值推断出过渡期。

通过指定此日期模式:%d{yyyy-MM-dd HH},对于一年中的每一天,您每次在新的时间记录一些东西时,实际的日志都会被归档,并为新的时间创建一个新的日志文件。

例如:01/03/17 09:00和之间的所有记录01/03/17 09:59均记录在当前日志文件中。
一旦01/03/17 10:00您创建了第一个日志,就会导致日志轮换(在指定了文件名模式的gz文件中归档实际日志,并清除当前日志文件)。

此外,如您指定<maxHistory>7</maxHistory>,它将仅存档7个不同的小时。
因此,如果您的应用程序每隔一小时记录一次日志,则将存档7个小时的应用程序日志,而不是您希望的7天。

如果您希望拥有7天的日志历史记录,只需删除HH模式中的:

 <fileNamePattern>${LOG_HOME}/appLog.%d{yyyy-MM-dd}.%i.log.gz
Run Code Online (Sandbox Code Playgroud)

但只要达到500MB即可压缩日志文件。

fileNamePattern您将压缩扩展名指定为文件后缀gz,zip等时,压缩是自动的:

请注意,文件压缩也是通过此属性指定的。例如,将fileNamePattern设置为MyLogFile%i.log.zip意味着必须使用zip格式压缩归档文件;还支持gz格式。

而且无论如何,Logback仅在遇到特定情况时才提供压缩归档的方法。
日志应该压缩还是不应该压缩。

声明此属性时:

 <maxFileSize>500MB</maxFileSize>
Run Code Online (Sandbox Code Playgroud)

您可以按存档指定最大文件大小。
如果您不需要在档案大小中设置限制,请不要指定它并保留默认值(10MB)。

您可以在回退附加程序文档中检索所有这些信息:


luc*_*fer 5

<maxHistory>168</maxHistory> 在这种情况下会起作用(24 * 7)