SkyWalking集成Logback的使用

news/2025/2/12 3:39:11/

SkyWalking集成Logback的使用

将微服务的日志框架去集成SkyWalking,我们希望在我们微服务中日志中,能够记录当前调用链路的id,然后我们再根据这个id去SkyWalking的前端界面中进行搜索找到对应的调用链路记录。

因为springboot默认实现的日志框架是logback,这里也就拿logback举例

  1. 引入logback相关maven依赖
<!-- skywalking 日志记录  -->
<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>8.5.0</version>
</dependency>
  1. 在项目中resources目录下创建logback-spring.xml文件,主要就是在日志的输出格式中添加[%X{tid}] 这个就是调用链路的id。
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod=" 5 seconds"><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.mdc.TraceIdMDCPatternLogbackLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></encoder></appender><appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"><discardingThreshold>0</discardingThreshold><queueSize>1024</queueSize><neverBlock>true</neverBlock><appender-ref ref="STDOUT"/></appender><appender name="grpc-log" 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>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></encoder></appender><root level="INFO"><appender-ref ref="grpc-log" /><appender-ref ref="ASYNC"/></root>
</configuration>
  1. 接入探针agent java探针
    1)下载探针,根据Skywalking版本进行下载
    ​ https://archive.apache.org/dist/skywalking/java-agent/
    2)idea使用探针
-javaagent:D:\Java\plugin\apache-skywalking-java-agent-8.9.0\skywalking-agent\skywalking-agent.jar 
-Dskywalking.agent.service_name=log-demo-service2 
-Dskywalking.collector.backend_service=192.168.0.203:11800

参数 说明
-javaagent:中下载的探针jar包位置
-Dskywalking.agent.service_name:在Skywalking中的服务名称,默认值为Your_ApplicationName
-Dskywalking.collector.backend_service: Skywalking-oap服务地址,默认值为127.0.0.1:11800
如果在本地起的Skywalking-oap服务,则没必要配置此参数

  1. 如果Skywalking-oap服务不是部署在本地,需要在agent的config/agent.config文件中添加以下内容
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:oap服务地址}
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}

最终效果:
控制台日志:

刚开始服务启动时,没有调用接口,也就肯定没有链路追踪id,然后调用接口后就会在日志中有显示了
**注意:**只有在添加了VM参数配置了agent之后,才会显示TID,有很多教程没有提及这一点
在这里插入图片描述
skywalking-ui界面查看:

在这里插入图片描述


http://www.ppmy.cn/news/58542.html

相关文章

2023python面试题(附答案)

精选 Python 面试题107道 什么是Python&#xff1f;它与其他编程语言有哪些区别和优劣势&#xff1f;什么是PEP 8&#xff1f;它的作用是什么&#xff1f;什么是元组&#xff08;Tuple&#xff09;&#xff1f;与列表&#xff08;List&#xff09;有哪些区别&#xff1f;什么是…

Hystrix断路器 (豪猪)-保险丝

一、概述 重点&#xff1a;能让服务的调用方&#xff0c;够快的知道被调方挂了&#xff01;不至于说让用户在等待。 Hystix 是 Netflix 开源的一个延迟和容错库&#xff0c;用于隔离访问远程服务、第三方库&#xff0c;防止出现级联失败&#xff08;雪崩&#xff09;。 雪崩&am…

MATLAB程序员投简历的技巧解析,如何写出有亮点的简历

如果你想在简历中展示你的项目经验&#xff0c;一定要有亮点。一个导出的 Excel 文件过大导致浏览器卡顿的例子就是一个很好的亮点。你可以在简历中写明这个例子。如果面试官问起&#xff0c;可以用浏览器的原理来解释。浏览器内核可以简单地分为以下 5 个线程&#xff1a;GUI …

知识管理在企业中的重要性

随着经济全球化和信息化的快速发展&#xff0c;企业面临着越来越多的竞争和挑战。如何把握市场动态、满足客户需求、提高产品质量和效率等&#xff0c;成为了企业发展中亟待解决的问题。而知识管理作为一种新兴的管理方式&#xff0c;逐渐引起了企业们的重视。本文将从以下几个…

风控系统就该这么设计(万能通用),那是相当稳定

一、背景 1.为什么要做风控? 2.为什么要自己写风控? 3.其它要求 二、思路 1.风控规则的实现 2.调用方式的实现 三、具体实现 1.风控计数规则实现 2.注解的实现 四、测试一下 1.写法 2.Debug看看 一、背景 1.为什么要做风控? 这不得拜产品大佬所赐&#xff0c;我们…

【华为OD机试真题】Linux发行版的数量(javaC++python) 100%通过率 超详细代码注释

Linux发行版的数量 知识点DFS搜索BFS搜索并查集 时间限制:1s 空间限制:256MB 限定语言:不限题目描述 Linux操作系统有多个发行版,distrowatch.com提供了各个发行版的资料。这些发行版互相存在关联,例如Ubuntu基于Debian开发,而Mint又基于Ubuntu开发,那么我们认为Mint同Deb…

Mysql 分库分表 Mycat

0 课程视频 https://www.bilibili.com/video/BV1Kr4y1i7ru?p163&spm_id_frompageDriver&vd_sourceff8b7f852278821525f11666b36f180a 1 单库问题 1.1 热点数据多 -> 缓冲区不足 ->内存不足 1.2 数据多 -> 磁盘不足 1.3 请求数据量多 -> 带宽不足 1…

CF1060E Sergey and Subway

CF1060E Sergey and Subway 树上计数dp&#xff0c;考虑每条边的贡献&#xff0c;树上两点距离用深度与LCA表示 长度为2的两点间可以连一条边&#xff0c;所以对于任意两点 i , j i,j i,j&#xff0c; d i s 2 i , j ⌈ d i s i , j / 2 ⌉ ( d i s i , j ( d i s i , j %…