是否可以仅将旧文件与日志一起归档?
例如,我需要将日志以文本形式存储14天,然后归档?
当前使用的附加器:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>../log/mylog.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>../log/mylog.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>50</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy.MM.dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
他在更改日志文件之后立即归档文件。
slf4j-1.7.2/logback-1.0.9
最佳答案
滚动日志文件是logback中归档日志文件的别名,因此滚动意味着归档。
I need to store logs as text 14 days, and then archive
然后不要对滚动策略设置最大文件限制。但是,我认为没有必要将其作为文本。据我所知,logback将日志归档为.gz格式。你可以使用一堆命令直接查看这些.gz格式的日志。例如zcat、zgrep,可以直接使用less来查看gz格式的日志。
你可以编写一个简单的shell程序将14天的日志从目录移动到另一个地方(这才是真正的归档)。该 shell 只需要通过设置 cron 作业每天运行一次。
关于java - 使用 logback 仅存档旧日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14869251/