本文介绍了跟踪 ID 未显示在控制器级别日志中(Spring 启动、Jaeger 配置)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
语言:Java
框架:Spring Boot
工具:Jaeger
我已经完成了以下配置以将整个跟踪记录在日志上.但在控制器级别日志没有显示跟踪.当执行休眠查询时比跟踪放在日志上(在服务和存储库级别日志上)
I have done the following configuration for put whole trace on logs.But at controller level log not shown a trace. when hibernate query executed than after trace is put on logs(on service and repository level logs)
应用程序日志
2019-11-08 05:14 INFO [iHub-service,] [http-nio-8080-exec-27] INFO c.s.controller.Controller ...............message.............
2019-11-08 05:14 DEBUG [iHub-service,294d434a24290786:294d434a24290786:0:1 - ] [http-nio-8080-exec-27] DEBUG org.hibernate.SQL logStatement - Hibernate query
Hibernate: hibernate query.........
2019-11-08 05:14 INFO [iHub-service,294d434a24290786:294d434a24290786:0:1 - ] [http-nio-8080-exec-27] INFO i.j.i.reporters.LoggingReporter report - Span reported: b9b799296f2b2dda:7aa285d9c044dce6:b9b799296f2b2dda:1 - Query
2019-11-08 05:14 DEBUG [iHub-service,b9b799296f2b2dda:7aa285d9c044dce6:b9b799296f2b2dda:1 - Query] [http-nio-8080-exec-27] DEBUG org.hibernate.SQL logStatement - hibernate query
Hibernate: hibernate query...........
记者类
public class MDCReporter implements Reporter {
public MDCReporter() {
// default constructor
}
@Override
public void report(JaegerSpan span) {
MDC.put("traceinfo", span);
}
Appender 类
public class JaegerReportAppender implements ReporterAppender {
public JaegerReportAppender() {
// default constructor
}
@Override
public void append(Collection<Reporter> reporters) {
reporters.add(new MDCReporter());
}
}
主要的spring boot类
Main spring boot class
@SpringBootApplication
public class Service1Application {
public static void main(String[] args) {
SpringApplication.run(Service1Application.class, args);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
JaegerReportAppender customLoggingReporter() {
return new JaegerReportAppender();
}
}
应用程序属性
opentracing.jaeger.http-sender.url = http://localhost:14268/api/traces
logging.pattern.console=%d{yyyy-MM-dd HH:mm} %5p [${spring.application.name},%X{traceinfo:-}] [%thread] %-5level %logger{36} %M - %msg%
spring.sleuth.opentracing.enabled=false
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.solanki</groupId>
<artifactId>Service-2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Service-2</name>
<description>service-1</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/io.opentracing.contrib/opentracing-spring-jaeger-cloud-starter -->
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
推荐答案
不幸的是,reporter 接口用于报告 FINISHED spans,它是在 JaegerSpan.finish 上调用的.我想这就是它没有出现在日志中的原因.
Unfortunatelly, the reporter interface is used to report FINISHED spans, it is invoked on JaegerSpan.finish. I presume this is why it does not appear in logs.
这篇关于跟踪 ID 未显示在控制器级别日志中(Spring 启动、Jaeger 配置)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!