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天的所有日志?任何帮助都非常感谢。
我要在这里实现的是保留过去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)。
您可以在回退附加程序文档中检索所有这些信息:
归档时间: |
|
查看次数: |
3638 次 |
最近记录: |