弹簧启动的spring boor v1.2.6中无法覆盖文件日志模式

时间:2015-09-21 19:57:30

标签: spring-boot logback

我做了很多搜索,但找不到正确的答案。默认情况下,spring boot以毫秒为单位记录消息。我需要以秒为单位记录时间戳或以微秒为单位。 (我想,我可以在毫秒结束时获得000微秒)。

因此,我想覆盖这个属性

<property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n%wex"/>

Spring引导文档说,如果classpath中有logback.xml,它将覆盖它的属性。 (我知道,1.2.x分支不允许覆盖application.properties)。然后我像这样在classpath中添加了logback.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="15 seconds">
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm} %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n%wex"/>
</configuration> 

但它不适合我。任何帮助将不胜感激。我还不想将我的应用程序升级到1.3.x.

2 个答案:

答案 0 :(得分:4)

终于想通了。我们需要覆盖整个默认的logback配置。所以我们把logback.xml放在classpath中。 这是我的文件,它覆盖了控制台和放大器的日志模式。文件。

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!-- Defined variables etc. -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

<!-- overridden two properties -->
    <property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}000){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex"/>
    <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS}000 %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n%wex"/>

<!--  copied from base.xml -->      
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

答案 1 :(得分:0)

在我看来,有一个&#34; bug&#34;在与file-appender相关的spring-boot.jar的defaults.xml中。该值无法覆盖。请参阅以下内容:

<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

此配置不允许您覆盖文件级别模式(logging.pattern.file

此修补程序在更高版本中可用。在Springboot 1.5.3中,配置现已修复:

<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>