一、借助skywalking追加traceId

背景:在微服务或多副本中难以观察一个链路的日志,需要通过唯一traceId标识来查找,下面介绍Skywalking-traceId在Java中的配置方法。介绍两种java日志的配置方法。

logback

  1. pom.xml增加依赖
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>8.8.0</version>
        </dependency>
  1. 修改日志配置文件,在相应的appender下加入encoder,注意class和tid字段
    <property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%tid] [%thread] %c [%L] -| %msg%n"/>
    <appender name="CONSOLE" 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>${PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>
  1. 官方文档:https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/#logback-plugin

log4j2

  1. pom.xml增加依赖
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-log4j-2.x</artifactId>
            <version>8.8.0</version>
        </dependency>
  1. 修改日志配置文件,只需要加入traceId字段即可
<property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%traceId] [%thread] [%-5level]  %msg %l%n"/>
  1. 官方文档:https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/application-toolkit-log4j-2.x/#print-trace-id-in-your-logs

效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QwBiQqwC-1665464928340)(http://showdoc.cosmoplat.com/server/index.php?s=/api/attachment/visitFile&sign=e8dccb7e3fdacb59d283f805bcb835b5)]

二、让skywalking显示日志内容

背景:可以通过配置将日志的内容通过gRPC转发给skywalking服务端,进而在用户端查看日志。

版本差异

skywalking 8.7 与 8.8 是版本分水线,关于gRPC这部分的配置不同,以下介绍基于8.8+,java-agent的版本使用8.8+,否则没有GRPCLogClientAppender类。

8.8
日志配置说明:https://github.com/apache/skywalking-java/blob/v8.8.0/docs/en/setup/service-agent/java-agent/Application-toolkit-log4j-2.x.md
配置文件清单:https://github.com/apache/skywalking-java/blob/v8.8.0/docs/en/setup/service-agent/java-agent/configurations.md
8.7
日志配置说明:https://github.com/apache/skywalking-java/blob/v8.7.0/docs/en/setup/service-agent/java-agent/Application-toolkit-log4j-2.x.md
配置文件清单:https://github.com/apache/skywalking-java/blob/v8.7.0/docs/en/setup/service-agent/java-agent/README.md

logback配置文件

    <appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
                <pattern>${PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>

log4j2配置文件

        <GRPCLogClientAppender name="GRPC">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </GRPCLogClientAppender>
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐