简介
说明
本文介绍SkyWalking将traceId输出到logback日志的方法。
版本
本文skywalking服务端版本为8.7.0。
概述
Skywalking可以直接在界面上看执行的链路,也可以将traceId输出到日志,这样的话,在日志里就可以分辨哪些是同一个请求。
本处,我使用logback,只配置将traceId日志输出到控制台,实际也可以写到日志文件的,方法差不多。logback配置方法见:
Java日志–logback–配置/介绍/基础_IT利刃出鞘的博客-CSDN博客
Java日志–logback–SpringBoot–整合/使用/教程/实例_IT利刃出鞘的博客-CSDN博客
依赖
pom.xml
<!--skywalking traceId 记录到logback日志--> <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-logback-1.x</artifactId> <version>8.7.0</version> </dependency>
logback配置
logback-spring.xml(放到resources目录下)
添加此配置
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"> <pattern>[%tid] ${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-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}}</pattern> </layout> </encoder> </appender>
- 使用[%tid] 来占trace-id的位置,默认为TID:N/A,当有请求调用时,会显示trace-id。
所有配置
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!--<include resource="org/springframework/boot/logging/logback/base.xml"/>--> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <!--<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>--> <!--<include resource="org/springframework/boot/logging/logback/file-appender.xml" />--> <springProperty scope="context" name="appName" source="spring.application.name"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"> <pattern>[%tid] ${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-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}}</pattern> </layout> </encoder> </appender> <root level="INFO"> <appender-ref ref="STDOUT"/> </root> </configuration>
测试
可以发现,没有请求的时候,打印的是:[TID:N/A],有请求进来时,打印traceId
请先
!