简体   繁体   English

使用 logback 格式化日志

[英]Format the logs using logback

I'm developping an application spring-boot.我正在开发一个应用程序 spring-boot。 I use logback for logs side.我将 logback 用于日志端。 I need to format the logs like this format.我需要像这样格式化日志。

aaa-mm-dd HH:mm:ss ## level ## TheNameOfMyApplication ## typeOfLogs ## class  ## message

this is a snippet of my file logback.xml这是我的文件 logback.xml 的片段

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

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

    <logger name="org.springframework.web" level="info" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="com.myapp" level="info" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

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

</configuration>

What can I do to pass in the logger.info() parameter, for example, the type of my logs.我该怎么做才能传入logger.info()参数,例如我的日志类型。 I have three types:我有三种类型:

  • technical, application and other技术、应用及其他

Best regards最好的祝福

You could use MDC (Mapped Diagnostic Context), using the %X specifier within the PatternLayout.您可以使用 MDC(映射诊断上下文),在 PatternLayout 中使用%X说明符。 Your pattern should look like:你的模式应该是这样的:

<Pattern>
    %d{yyyy-MM-dd HH:mm:ss} ## %-5level%X{nameofapplication} %logger{36}##%msg%n
</Pattern>

And then, your code:然后,你的代码:

 MDC.put("nameofapplication", "technical");

Have a look to the documentation: LOGBack - Mapped Diagnostic Context查看文档: LOGBack - Mapped Diagnostic Context


For slf4j/logback , in order to set a MDC default value, when the entry has not been specified, you need to use the separator :- like:对于slf4j/logback ,为了设置 MDC 默认值,当没有指定条目时,您需要使用分隔符:-像:

%{variable:-default value}

So, your pattern should be:所以,你的模式应该是:

<Pattern>
    %d{yyyy-MM-dd HH:mm:ss} ## %-5level%X{nameofapplication:-technical} %logger{36}##%msg%n
</Pattern>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM