Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 从TimeBasedRollingPolicy移动到SizeAndTimeBasedRollingPolicy,每mignight或最大大小滚动一次_Logging_Logback_Rollingfileappender - Fatal编程技术网

Logging 从TimeBasedRollingPolicy移动到SizeAndTimeBasedRollingPolicy,每mignight或最大大小滚动一次

Logging 从TimeBasedRollingPolicy移动到SizeAndTimeBasedRollingPolicy,每mignight或最大大小滚动一次,logging,logback,rollingfileappender,Logging,Logback,Rollingfileappender,当我使用下面的appender时 <appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>D:/logs/log.txt</file> <append>true</append> <encoder class="ch.qos.logback.classic.en

当我使用下面的appender时

<appender name="APPLICATION"
          class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>D:/logs/log.txt</file>
    <append>true</append>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%p %d [%t] %L - %m%n</Pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>D:/logs/log.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <!-- keep 30 days' worth of history -->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
</appender>
但我得到:

未为名为的RollingFileAppender设置TriggeringPolicy 应用

这使我认为没有这样的触发策略,因此我将触发策略还原为
SizeAndTimeBasedFNATP
,并将滚动策略从
TimeBasedRollingPolicy
更改为
SizeAndTimeBasedRollingPolicy

我的新滚动策略现在变为:

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>D:/logs/log.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <!-- keep 30 days' worth of history -->
        <maxHistory>30</maxHistory>
</rollingPolicy>

D:/logs/log.%D{yyyy-MM-dd}.%i.txt
10MB
30
但我得到:

触发策略尚未启动。RollingFileAppender将不会启动


我试图在每到午夜或在最大尺寸后实现翻车,以先到者为准。现在,我正在使用logback版本:
1.2.3

最终发现
maxFileSize
必须在
timebasedFileName和triggeringPolicy
之外,并且
SizeAndTimeBasedRollingPolicy
不需要这样做。因此,根据时间和大小(以先到者为准)滚动的最终logback.xml变为:


%p%d[%t]%L-%m%n
D:/logs/log.txt
真的
%p%d[%t]%L-%m%n
D:/logs/log.%D{yyyy-MM-dd-HH}.%i.txt
5GB
30
20GB
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>D:/logs/log.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <!-- keep 30 days' worth of history -->
        <maxHistory>30</maxHistory>
</rollingPolicy>
<?xml version="1.0" encoding="UTF-8"?>

<configuration>
    <!-- Send debug messages to System.out -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%p %d [%t] %L - %m%n</pattern>
        </encoder>
    </appender>
    <appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>D:/logs/log.txt</file>
        <append>true</append>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%p %d [%t] %L - %m%n</Pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>D:/logs/log.%d{yyyy-MM-dd HH}.%i.txt</fileNamePattern>
            <maxFileSize>5GB</maxFileSize>
            <!-- keep 30 days' worth of history -->
            <maxHistory>30</maxHistory>
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <logger name="javaportreader" level="INFO" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>
    <logger name="application" level="DEBUG" additivity="false">
        <appender-ref ref="APPLICATION"/>
    </logger>

    <!-- By default, the level of the root level is set to DEBUG -->
    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
    </root>
    <root level="INFO">
        <appender-ref ref="APPLICATION"/>
    </root>
</configuration>