所有分类
  • 所有分类
  • 未分类

SkyWalking-将traceId输出到logback日志的方法

简介

说明

本文介绍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

0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录