Java 使用logback格式化日志
我正在开发一个应用程序spring boot。我使用logback作为日志侧。我需要像这样格式化日志Java 使用logback格式化日志,java,spring,logging,spring-boot,logback,Java,Spring,Logging,Spring Boot,Logback,我正在开发一个应用程序spring boot。我使用logback作为日志侧。我需要像这样格式化日志 aaa-mm-dd HH:mm:ss ## level ## TheNameOfMyApplication ## typeOfLogs ## class ## message 这是我的文件logback.xml的一个片段 <?xml version="1.0" encoding="UTF-8"?> <configuration>
aaa-mm-dd HH:mm:ss ## level ## TheNameOfMyApplication ## typeOfLogs ## class ## message
这是我的文件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>
如何传入logger.info参数,例如,我的日志类型。我有三种类型:
技术、应用和其他
致意您可以使用MDC映射的诊断上下文,在PatternLayout中使用%X说明符。您的模式应该如下所示:
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} ## %-5level%X{nameofapplication} %logger{36}##%msg%n
</Pattern>
请参阅以下文档:
对于slf4j/logback,为了设置MDC默认值,当未指定条目时,需要使用分隔符:-例如:
因此,您的模式应该是:
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} ## %-5level%X{nameofapplication:-technical} %logger{36}##%msg%n
</Pattern>
谢谢@alfcope,我觉得很好用。是否有可能为该变量设置默认值?是否可以在私有静态最终记录器Logger=LoggerFactory.getLoggerMyClassTest.class之后,在每个类中调用一次MDC.putnameofapplication,technical;然后是MDC.putnameof应用程序,技术人员认为这是不可能的,因为MDC是基于每个线程管理数据的。正如文档所述,诸如put和get之类的MDC操作只影响当前线程的MDC。在多线程应用程序中,如web应用程序,不同的请求将由不同的线程处理。
%{variable:-default value}
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} ## %-5level%X{nameofapplication:-technical} %logger{36}##%msg%n
</Pattern>