1. 介绍
Spring Cloud Sleuth是一个在应用中实现日志跟踪的强有力的工具。 不一定非要使用spring cloud, 一般的spring boot项目就可以搭配sleuth进行日志跟踪.
1.1. 如何使用
1.1.1. 引入依赖
在bulid.gradle文件中引入依赖jar包:
implementation("org.springframework.cloud:spring-cloud-starter-sleuth:2.1.1.RELEASE")
目前最新的spring-cloud-starter-sleuth版本是2.1.1.RELEASE,与GB的springboot2.1.4没有冲突 |
1.1.2. 添加属性
在配置文件application.yml中增加:
spring.application.name: gb Sleuth Demo project
1.1.3. 运行工程
运行项目,访问 http://localhost
访问任何项目URL,得到如下的日志输出:
2019-06-14 17:25:12.091 DEBUG [GB Sleuth Demo project,f72b0d121ac16ee1,f72b0d121ac16ee1,false] 10140 --- [io-8080-exec-10] org.hibernate.SQL : select this_.base_user_id as base_use1_3_0_, this_.base_role_id as base_rol2_3_0_ from base_user_base_role this_ where this_.base_user_id=? 2019-06-14 17:25:12.091 TRACE [GB Sleuth Demo project,f72b0d121ac16ee1,f72b0d121ac16ee1,false] 10140 --- [io-8080-exec-10] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [8a80cb816b5541ef016b554238c60000] 2019-06-14 17:25:12.092 DEBUG [GB Sleuth Demo project,f72b0d121ac16ee1,f72b0d121ac16ee1,false] 10140 --- [io-8080-exec-10] org.hibernate.SQL : select baserole0_.id as id1_0_0_, baserole0_.version as version2_0_0_, baserole0_.name as name3_0_0_, baserole0_.authority as authorit4_0_0_, baserole0_.type as type5_0_0_, baserole0_.description as descript6_0_0_ from base_role baserole0_ where baserole0_.id=? 2019-06-14 17:25:12.092 TRACE [GB Sleuth Demo project,f72b0d121ac16ee1,f72b0d121ac16ee1,false] 10140 --- [io-8080-exec-10] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [ROLE_ADMIN]
日志的格式为:[application name, traceId, spanId, export]
参数名称 | 描述 |
---|---|
application name |
应用的名称,也就是application.properties中的spring.application.name参数配置的属性。 |
traceId |
为一个请求分配的ID号,用来标识一条请求链路。 |
spanId |
表示一个基本的工作单元,一个请求可以包含多个步骤,每个步骤都拥有自己的spanId。一个请求包含一个TraceId,多个SpanId |
export |
布尔类型。表示是否要将该信息输出到类似Zipkin这样的聚合器 |
2. 扩展使用
sleuth也支持在job,定时任务中的异步跟踪使用.通过@Async和@Scheduled两个注解提供更多支持. 详细参见https://www.baeldung.com/spring-cloud-sleuth-single-application