Java logback未生成新的日志文件

Java logback未生成新的日志文件,java,pom.xml,logback,Java,Pom.xml,Logback,我在我的Micronaut项目中使用了lower logback.xml,它并没有按照xml配置中提供的rollingPolicy生成新的日志文件。我尝试了SizeAndTimeBasedRollingPolicy和TimeBasedRollingPolicy,但都没有成功 Micronaut版本:1.2.2 logback经典:1.2.3 文件:logback.xml <configuration> <appender name="FILE" class="ch.q

我在我的Micronaut项目中使用了lower logback.xml,它并没有按照xml配置中提供的rollingPolicy生成新的日志文件。我尝试了SizeAndTimeBasedRollingPolicy和TimeBasedRollingPolicy,但都没有成功

Micronaut版本:1.2.2

logback经典:1.2.3

文件:logback.xml

<configuration>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/my-app.log</file>
        <encoder>
            <pattern>%cyan(%d{yyyy-MM-dd HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}):%line- %msg%n</pattern>
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.RollingFileAppender">
            <fileNamePattern>
                logs/my-app.log-%d{yyyy-MM-dd}-%i.log.gz
            </fileNamePattern>
            <maxHistory>30</maxHistory>
            <totalSizeCap>1MB</totalSizeCap>
        </rollingPolicy>

    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%cyan(%d{yyyy-MM-dd HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}):%line- %msg%n</pattern>
        </encoder>
    </appender>

    <root level="ALL">
        <appender-ref ref="FILE" />
        <appender-ref ref="STDOUT" />
    </root>


</configuration>

日志/my-app.log
%青色(%d{yyyy-MM-dd HH:MM:ss.SSS})%灰色([%thread])%高光(%-5level)%洋红(%logger{36}):%line-%msg%n
logs/my app.log-%d{yyyy-MM-dd}-%i.log.gz
30
1MB
%青色(%d{yyyy-MM-dd HH:MM:ss.SSS})%灰色([%thread])%高光(%-5level)%洋红(%logger{36}):%line-%msg%n

如果im没有错,您的maxHistory策略将阻止您生成多个文件。取而代之的是,它会删除旧的一个,并在新的一天或达到1mb大小时创建一个新的


在这种情况下,maxHistory必须与TimeBasedRollingPolicy相结合,如您所述,maxHistory是天数的参数。如果没有TimeBasedRollingPolicy,它可能只是文件数

根据我自己使用logback的经验,您应该执行以下操作:

<appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
...
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>logs/my-app.log-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
    </rollingPolicy>
    <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>1MB</MaxFileSize>
    </triggeringPolicy>
...
</appender>

...
logs/my app.log-%d{yyyy-MM-dd}-%i.log.gz
1MB
...

当前,您正在使用“RollingFileAppender”作为策略,因此它无法工作。

在应用程序中,我们为60提供了maxHistory,因为发布了一个问题,我将其保留为1(也有问题地更新了)。当前在服务器上,它仅将所有日志附加到1个文件,文件大小增加到GBs。感谢Orcn,不幸的是,它对我也不起作用(在您的用例中,您是否尝试使用
1MB
而不是
1MB
?事实上,totalSizeCap表示您将在所有日志文件上只保留1MB的日志。另外,您可以使用SizeBaseRollingPolicy作为rollingPolicy,使用RollingFileAppender作为appender。来源: