每次重新启动时,logback都会创建新文件

时间:2018-07-20 10:10:31

标签: java scala logback

我有这样的logback.xmp conf:

<configuration scan="true" scanPeriod="10 seconds" >

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${application.home:-.}/logs/application.log</file>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>DEBUG</level>
    </filter>
    <encoder>
        <pattern>[%d{HH:mm:ss}] [%level] - %message%n%xException</pattern>
    </encoder>
</appender>

<logger name="play" level="WARN"/>
<logger name="application" level="DEBUG"/>

<logger name="org.jdbcdslog.ConnectionLogger" level="OFF"/> <!-- Won' log connections -->
<logger name="org.jdbcdslog.StatementLogger" level="INFO"/> <!-- Will log all statements -->
<logger name="org.jdbcdslog.ResultSetLogger" level="OFF"/> <!-- Won' log result sets -->

<root level="WARN">
    <appender-ref ref="FILE"/>
</root>

</configuration>

每次我重新启动编时,它都会创建一个新的日志文件,但是以我的方式,我想继续将日志写入旧的日志文件。那是什么问题呢?

3 个答案:

答案 0 :(得分:0)

Logback包含一项功能,该功能允许多个jvm登录到同一日志文件。可以通过将FileAppender的“审慎”属性设置为true来启用此功能。

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <!-- Support multiple-JVM writing to the same log file -->
         <prudent>true</prudent>
</appender>

RollingFileAppender扩展了FileAppender的功能,可以翻转日志文件。

答案 1 :(得分:0)

您可能想在<append>true</append>标记中添加<appender>。默认情况下应该为true,但让我们检查一下。 文档为here

答案 2 :(得分:0)

我认为您需要使用append属性。

  

是添加还是截断文件?此变量的默认值为true,这意味着默认情况下,FileAppender将追加到现有文件,而不截断该文件。

例如:

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${application.home:-.}/logs/application.log</file>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>DEBUG</level>
    </filter>
    <encoder>
        <pattern>[%d{HH:mm:ss}] [%level] - %message%n%xException</pattern>
    </encoder>
    <append>true</append>
</appender>

但是,由于(根据javadoc ...和当前版本的source code),append属性默认为true,因此不清楚为什么需要为此 1

请注意,将prudent设置为true也会将append设置为true


1-除非...也许...您正在遇到Windows文件锁定问题?