Spring Boot日志模式

时间:2015-06-01 10:36:40

标签: spring spring-boot logback

我在Spring Boot应用程序的Logback上配置有问题。我希望我的consoleAppender看起来像默认的Spring Boot控制台appender。如何从Spring Boot默认控制台appender继承模式?

以下是我的consoleAppender配置

<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern class="org.">
            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
        </Pattern>
    </layout>
</appender>

8 个答案:

答案 0 :(得分:33)

包含默认配置后,您可以在自己的logback-spring.xml配置中使用其值:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
    <!-- use Spring default values -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
    …
</configuration>

答案 1 :(得分:28)

您可以在defaults.xml文件中找到Spring Boot logback控制台日志记录模式:

  

弹簧引导1.5.0.RELEASE.jar /组织/ springframework的/引导/记录/的logback / 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}}"/>

答案 2 :(得分:7)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx
            </Pattern>
        </layout>
    </appender>

    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

答案 3 :(得分:6)

自问这个问题以来已经有一段时间了,但由于我最近自己遇到了这个问题并且无法找到答案,所以我开始深入挖掘并找到一个对我有用的解决方案。

我最终使用调试器并查看附加到记录器的默认appender。

我发现这种模式对我来说是正常的:

<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p 18737 --- [%t] %-40.40logger{39} : %m%n%wEx</pattern>

编辑:模式不完全正确,我看到运行时某些值已经被实例化(在这种情况下是18737 ---)我会查看适当的变量来替换它。它确实包含固定长度列的格式

编辑2:好的,我再看一下调试器的内容。您也可以通过查看记录器实例的内容来自己做: http://codepen.io/anon/pen/XKoqZq

所以我最终使用了consoleAppender中使用的模式:

%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(18971){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx

从这里可以看出:

Debugger(eclipse) Logger Contents

答案 4 :(得分:3)

可以使用application.properties文件配置记录模式

示例:

# Logging pattern for the console
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n

答案 5 :(得分:0)

对于那些想要使用ŁukaszFrancowski的答案(这看起来像是最干净的解决方案)的人来说,但是在一个时髦的版本中,“有问题的”{$PID:- }部分可以如下扩展:

<强>的logback-spring.groovy

import ch.qos.logback.classic.PatternLayout
import ch.qos.logback.core.ConsoleAppender
import org.springframework.boot.logging.logback.ColorConverter
import org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter
import org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter

import static ch.qos.logback.classic.Level.INFO

conversionRule("clr", ColorConverter)
conversionRule("wex", WhitespaceThrowableProxyConverter)
conversionRule("wEx", ExtendedWhitespaceThrowableProxyConverter)

appender("STDOUT", ConsoleAppender) {
    layout(PatternLayout) {
        def PID = System.getProperty("PID") ?: ''
        pattern = "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"
    }

}
root(INFO, ["STDOUT"])

答案 6 :(得分:0)

您可以使用以下模式:

from random import *
char="""1234567890+!#$%&/()=?qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM
,.-;:_*@<>≤≥©™£€∞§|[]≈±`•Ω醵üıπß∂ƒ¸˛√ª÷≈ç‹›‘’°˝É‡˜ÜŒ∏◊∑∆∫¯˘¬º⁄Ç«»“”"""
char=list(char)
while True:
    while True:
        passlen = int(input("""Password must between 8 and 16 character   """))
        if 8 <= passlen <= 16:
            break

    for i in range(passlen):
        print(char[randint(0, len(char))], end="")
    print()

答案 7 :(得分:0)

请注意,您还可以自定义导入的属性。

但是请注意,至少要使用Spring Boot 1.4.3,如果要自定义从defaults.xml导入的属性,则应将自定义放置在包含之前。

例如,这将优先级自定义为100个字符宽:

<configuration scan="true">
    <property name="LOG_LEVEL_PATTERN" value="%100p" />

    <!-- use Spring default values -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
        </layout>
    </appender>

    <logger name="hu" level="debug" additivity="false">
        <appender-ref ref="CONSOLE" />
    </logger>

    <root level="warn">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>

但这不是:

<configuration scan="true">
    <!-- use Spring default values -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <property name="LOG_LEVEL_PATTERN" value="%100p" />

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
        </layout>
    </appender>

    <logger name="hu" level="debug" additivity="false">
        <appender-ref ref="CONSOLE" />
    </logger>

    <root level="warn">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>