【发布时间】:2018-11-29 04:00:43
【问题描述】:
我正在使用 spring-boot 并使用 logback 来生成日志。现在我想在每个日志中记录一个特定的标题。
我怎样才能做到这一点。
我的 logback 文件是
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProperty name="appName" source="spring.application.name" defaultValue="apigateway" />
<property name="LOG_PATH" value="${LOG_PATH}" />
<!-- Console logging -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
[%d{YYYY-MM-dd HH:mm:ss.SSS}] [%X{X-B3-CONVID:-}] [%X{X-B3-TraceId:-}] [%X{X-B3-SpanId:-}] [${HOSTNAME}] [%level] [${appName}] [%logger{36}.%M] - %msg %n
</pattern>
</encoder>
</appender>
<appender name="APPLICATIONLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/applogs/application.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>60</maxHistory>
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<encoder>
<Pattern>
[%d{YYYY-MM-dd HH:mm:ss.SSS}] [%X{X-B3-CONVID:-}] [%X{X-B3-TraceId:-}] [%X{X-B3-SpanId:-}] [${HOSTNAME}] [%level] [${appName}] [%logger{36}.%M] - %msg %n
</Pattern>
</encoder>
</appender>
<!-- set logger level: e.g. info, trace, debug, error -->
<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="APPLICATIONLOG" />
</root>
</configuration>
除此之外,我没有做任何事情来配置日志。 只是添加了slf4j的依赖,然后添加了logback spring文件。
感谢任何帮助
【问题讨论】:
-
您能否为上述设置添加什么是 o/p,以及您期望的是什么?您希望在每个日志中打印 %X{X-B3-TraceId:-}?
-
这个 o/p 打印在每个日志上,我希望我的标题打印在每个日志上
-
我的意思是,你需要打印 RESTful 服务请求的标头还是日志文件的标头(比如日志文件的第一行将是
)? -
是的,在我的 service rest api 中,我会得到一个名为 TrasactionId 的 http 标头,我想打印在每个日志中
-
是不是这样
[INFO [[2018-06-20 14:18:46,795] [GET /api/id/123] [[c.TestResource - [Txn-a553970e-5951-4afd-a183-13216438f37d] - test api response : "hello"?
标签: spring-logback