gpt4 book ai didi

java - 基于时间和大小的记录器备份策略

转载 作者:行者123 更新时间:2023-11-30 06:59:16 25 4
gpt4 key购买 nike

我正在尝试在基于 spring 的项目中创建记录器策略。

在下面的记录器中,我希望创建一个滚动策略,该策略会在 rollingfile.log 超过 10 Mb 时创建一个新文件。这样我就可以备份日志,而无需一个巨大的记录器文件。有什么办法可以做到吗?

下面给出的是我的 logback.xml。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" scanPeriod="30 seconds">
<property name="LOG_PATH" value="D:/coinLogs" />
<property name="LOG_ARCHIVE" value="${LOG_PATH}/archive" />

<appender name="Console-Appender" class="ch.qos.logback.core.ConsoleAppender">
<layout>
<pattern>[%d{yyyy-MM-dd HH:mm:ss}] - [%X{requestId}] - %p %c -- %m%n
</pattern>
</layout>
</appender>

<appender name="File-Appender" class="ch.qos.logback.core.FileAppender">
<file>${LOG_PATH}/logfile.log</file>
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss}] - [%X{requestId}] - %p %c -- %m%n
</pattern>
<outputPatternAsHeader>true</outputPatternAsHeader>
</encoder>
</appender>

<appender name="RollingFile-Appender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/rollingfile.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_ARCHIVE}/rollingfile.log%d{yyyy-MM-dd}.log
</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>10MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>

<appender name="Async-Appender" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="RollingFile-Appender" />
</appender>

<logger name="coinPay.logbackxml" level="info" additivity="false">
<appender-ref ref="Console-Appender" />
<appender-ref ref="File-Appender" />
<appender-ref ref="Async-Appender" />
</logger>

<!-- To remove extra hibernate logs -->
<logger name="org.hibernate">
<level value="info" />
</logger>

<root>
<appender-ref ref="Console-Appender" />
<appender-ref ref="File-Appender" />
<appender-ref ref="Async-Appender" />
</root>

</configuration>

最佳答案

总大小上限没有达到您想要的效果。

 <totalSizeCap>10MB</totalSizeCap>

它限制了所有存档日志文件的总大小。你可以看看TimeBasedArchiveRemover::capTotalSize了解它在做什么。

你需要做的是改变TimeBasedRollingPolicySizeAndTimeBasedRollingPolicy并设置<maxFileSize>10MB</maxFileSize>

所以你的配置应该包括:

 <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_ARCHIVE}/rollingfile.log%d{yyyy-MM-dd}.log
</fileNamePattern>
<maxFileSize>10MB<maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>

关于java - 基于时间和大小的记录器备份策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41216521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com