这是我第一次在spring中使用日志记录,并给了我一个logback-spring.xml来使用和调整。这是我当前的logback-spring.xml的样子:

 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
    <include
     resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="LOG_FILE" value="logs/my_file_name.log}"/>
    <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy
         class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
            <maxHistory>10</maxHistory>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
    </appender>
    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
 </configuration>

我还在我的application.properties中添加了以下内容:
logging.config=config/logback-spring.xml

当我运行程序时,将自动创建日志目录。但是,根据我的需要和我的logback-spring.xml指定,当前的日志名为my_file_name.log而不是my_file_name.log.2017-10-25.gz。

为什么会这样呢?是由于logback-spring.xml中的错误还是因为我需要在application.properites中指定其他内容或在pom.xml中添加其他内容?还是在不同日期再次运行该程序时日志名称会自动更改?

最佳答案

在启动时,Logback将写入appender/file定义的文件,并且在启动滚动策略时,Logback会将当前日志文件复制到appender/rollingPolicy/fileNamePattern建议的文件。

在您的情况下,滚动策略会在一天中开始生效(这就是您的模式-%d{yyyy-MM-dd}-的意思)。因此,直到第10天,Logback每天都会滚动当前日志文件,而在第10天,它将滚动当前日志文件丢弃最旧的存档文件,从而仅保留maxHistory存档文件。

更多细节in the docs

顺便说一句,您的logback-spring.xml似乎确实有错误,我怀疑这是...

<property name="LOG_FILE" value="logs/my_file_name.log}"/>

... 应该:
<property name="LOG_FILE" value="logs/my_file_name.log"/>

关于java - logback-spring.xml不会追加文件名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46936207/

10-11 20:39