大家都知道Skywalking 的链路追踪功能非常强大,可以帮助用户深入了解应用程序中各个组件之间的依赖关系。在实际应用中,往往需要将链路追踪数据与日志数据结合起来进行综合分析。Skywalking 提供了 Trace Log 结合插件,可以帮助用户快速定位问题。Skywalking 支持多种日志采集方式,包括 Log4j、SLF4J、Logback 等常见的 Java 日志框架。此外,还支持通过 TCP、UDP、HTTP 等协议传输日志数据。用户可以根据实际需求选择合适的采集方式和传输协议。本文以Skywalking 采集Log4j 2 日志为例,给大家演示完整的日志采集的配置过程。

Skywalking 采集springboot 应用日志

skywalking 版本9.3.0

Pom.xml 配置

 org.springframework.boot spring-boot-starter   org.springframework.boot spring-boot-starter-logging    org.springframework.boot spring-boot-starter-log4j2 org.apache.skywalking apm-toolkit-log4j-2.x 9.1.0  org.apache.skywalking apm-toolkit-trace 9.1.0

在src\main\resources 根目录下创建文件log4j2.xml

           

在上面的配置文件中

%traceId 代表traceid的值

其他PatternLayout 的常见参数含义如下:

%r : 程序从开始之后跑的时间

%t : 发出日志请求的线程

%-10p : 日志level,”-“号为向左对齐,10为显示的长度

%c : logger的名字,通常就是所在类的全名,后面加上{2}可指定只输出的全名的最后两个

%m : 日志信息

%n : 换行

%d : 日期

%l : 位置

%L: 输出代码中的行号

%X{variableName} : 输出和当前线程相关联的NDC(嵌套诊断环境),{指定变量名输出}

代码中只需要正常使用log4j2的api 写代码即可,

import org.apache.skywalking.apm.toolkit.trace.ActiveSpan;import org.apache.skywalking.apm.toolkit.trace.TraceContext;import org.slf4j.Logger;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloWorld {private static final Logger logger = org.slf4j.LoggerFactory.getLogger(HelloWorld.class );@GetMapping("/kevin")public String helloworld(){ logger.info("*****info*****: call helloworld"); return "Hello World "; }@GetMapping("/kevin/login")public String login(@RequestParam(value="name",required=true) String name, @RequestParam(value="password",required=true) String pwd){ logger.info("*****info*****: call login"); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return name+" "+pwd; }}

完整的工程代码下载地址

https://download.csdn.net/download/liwenxiang629/88799617?spm=1001.2014.3001.5503

skywalking 中的应用日志显示

然后调用几次api 以后,就可以在skywalking的oap中看到输出的日志信息了

点击上图中的相关日志,显示结果如下:

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!