Spring Boot 日志记录模式

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/30571319/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 00:36:59  来源:igfitidea点击:

Spring Boot logging pattern

springspring-bootlogback

提问by Kacper

I have a problem with configuration on Logback in a Spring Boot application. I want my consoleAppenderto look like the default Spring Boot console appender. How to inherit pattern from Spring Boot default console appender?

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

Below is my consoleAppenderconfiguration

下面是我的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>

回答by Michael Piefel

Once you have included the default configuration, you can use its values in your own logback-spring.xmlconfiguration:

包含默认配置后,您可以在自己的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>

回答by Lapaczo

You can find Spring Boot logback console logging pattern in defaults.xml file:

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

spring-boot-1.5.0.RELEASE.jar/org/springframework/boot/logging/logback/defaults.xml

spring-boot-1.5.0.RELEASE.jar/org/springframework/boot/logging/logback/defaults.xml

Console pattern:

控制台模式:

<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}}"/>

回答by Lukasz Frankowski

<?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>

回答by Edvaaart

It's been some time since this question was asked but since I had the problem myself recently and couldn't find an answer I started digging a bit deeper and found a solution that worked for me.

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

I ended up using the debugger and take a look at the default appenders attached to the logger.

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

I found this pattern to be working as desired for me:

我发现这种模式可以按我的需要工作:

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

EDIT: The pattern is not entirely correct, I saw that runtime some values had already been instantiated (in this case 18737 ---) i will look into the proper variable to substitute there. It does contain the format for fixed length columns though

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

EDIT 2: Ok, I took another look at the debugger contents. This you can also do yourself by looking at the contents of a logger instance: Debugger(eclipse) Logger Contents

编辑 2:好的,我又看了一下调试器的内容。您也可以通过查看记录器实例的内容来自己完成此操作: Debugger(eclipse) Logger Contents

So I ended up using the pattern used in the consoleAppender:

所以我最终使用了 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

As can be seen here:

可以在这里看到:

Debugger: detailed contents of the encoder pattern

Debugger:编码器模式的详细内容

回答by DV Singh

Logging pattern can be configured using application.properties file

可以使用 application.properties 文件配置日志模式

Example :

例子 :

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

回答by shrey

You can use below pattern :

您可以使用以下模式:

%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID} --- [%15.15t] %-40.40logger{1.} : %m%n%wEx

回答by riskop

Note that you can also customize the imported properties.

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

But beware that at least with spring boot 1.4.3 if you want to customize the properties imported from the defaults.xml, then the customization should be placed BEFORE the include.

但请注意,至少在 spring boot 1.4.3 中,如果您想自定义从 defaults.xml 导入的属性,那么自定义应该放在 include 之前。

For example this customizes the priority to 100 character wide:

例如,这将优先级自定义为 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>

But this is NOT:

但这不是:

<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>

回答by Solar Fiber

For those who'd like to use ?ukasz Frankowski's answer (which looks like the cleanest solution here), but in a groovy version, the "problematic" {$PID:- }part can be expanded like in the following:

对于那些想使用 ?ukasz Frankowski 的答案(这里看起来是最干净的解决方案)的人,但在 groovy 版本中,“有问题”的{$PID:- }部分可以扩展如下:

logback-spring.groovy

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"])