整合 Sleuth 编码实践
在微服务架构项目中整合 Sleuth
的具体步骤如下。
第一步,开启 OpenFeign
的日志输出功能。
为了增强后续功能演示的效果,需要开启 OpenFeign
的日志输出功能,这样就能够把 OpenFeign
远程调用接口的日志内容打印出来。
在 newbee-mall-cloud-recommend-web
、newbee-mall-cloud-order-web
、newbee-mall-cloud-shop-cart-web
和 newbee-mall-cloud-goods-web
4 个微服务实例工程中的 config
包下新增 OpenFeignConfiguration
类,用于设置 OpenFeign
的日志级别,代码如下:
@Configuration
public class OpenFeignConfiguration {
@Bean
public Logger.Level openFeignLogLevel() {
// 设置 OpenFeign 的日志级别
return Logger.Level.FULL;
}
}
因为用户微服务并不会通过 OpenFeign
调用其他微服务,所以这里不需要在 newbee-mall-cloud-user-web
工程中添加这个配置类。
第二步,在配置文件中增加关于日志输出的配置。
修改 newbee-mall-cloud-user-web
、newbee-mall-cloud-recommend-web
、newbee-mall-cloud-order-web
、newbee-mall-cloud-shop-cart-web
和 newbee-mall-cloud-goods-web
5 个微服务实例工程中的 application.properties
文件,设置日志输出的相关配置,分别新增如下配置项。
newbee-mall-cloud-user-web
:
# 演示需要,开启当前项目中的 debug 级别日志
logging.level.ltd.user.cloud.newbee-debug
日志输出级别为 debug
,即 debug
、info
和 error
级别的日志都会被输出。
newbee-mall-cloud-recommend-web
:
# 演示需要,开启 OpenFeign 和当前项目中的 debug 级别日志
logging.level.ltd.user.cloud.newbee.openfeign=debug
logging.level.ltd.goods.cloud.newbee.openfeign=debug
logging.level.ltd.recommend.cloud.newbee=debug
由于订单微服务会通过 OpenFeign
调用购物车微服务、用户微服务和商品微服务,因此不仅设置了订单微服务工程包目录下的日志输出级别,还设置了 OpenFeign
的日志输出级别,与 OpenFeign
相关的日志也会被输出。
另外,读者需要注意这里的包名配置。logging.level.ltd.order.cloud.newbee=debug
配置的是订单微服务工程下的包,其他 3 行配置项分别是用户微服务、商品微服务和购物车微服务 OpenFeign
包下的配置,因为订单微服务在 pom.xml
文件中引入了相关的api依赖,所以要想输出订单微服务通过 OpenFeign
调用购物车微服务、商品微服务和用户微服务时的日志,这3行日志就是必须加上的,注意包名设置分别是购物车微服务、用户微服务和商品微服务 3 个工程下的包名配置,即 logging.level.ltd.shopcart.cloud.newbee.openfeign
、ltd.user.cloud.newbee.openfeign
和 ltd.goods.cloud.newbee.openfeign
,而不是订单微服务工程下的包名配置 ltd.order.cloud.newbee
。
newbee-mall-cloud-goods-web
:
# 演示需要,开启 OpenFeign 和当前项目中的 debug 级别日志
logging.level.ltd.user.cloud.newbee.openfeign=debug
logging.level.ltd.goods.cloud.newbee=debug
由于推荐微服务会通过 OpenFeign
调用用户微服务,因此不仅设置了商品微服务工程包目录下的日志输出级别,还设置了 OpenFeign
的日志输出级别,与 OpenFeign
相关的日志也会被输出,读者需要注意这里的包名设置。
newbee-mall-cloud-shop-cart-web
:
# 演示需要,开启 OpenFeign 和当前项目中的 debug 级别日志
logging.level.ltd.user.cloud.newbee.openfeign=debug
logging.level.ltd.goods.cloud.newbee.openfeign=debug
logging.level.ltd.shopcart.cloud.newbee=debug
由于购物车微服务会通过 OpenFeign
调用用户微服务和商品微服务,因此不仅设置了购物车微服务工程包目录下的日志输出级别,还设置了 OpenFeign
的日志输出级别,与 OpenFeign
相关的日志也会被输出,读者需要注意这里的包名设置。
第三步,引入 Sleuth
依赖。
依次打开 newbee-mall-cloud-user-web
、newbee-mall-cloud-recommend-web
、newbee-mall-cloud-order-web
、newbee-mall-cloud-shop-cart-web
和 newbee-mall-cloud-goods-web
5 个微服务实例工程中的 pom.xml
文件,在 dependencies
节点下新增 Spring CloudSleuth
的依赖项,配置如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
之后,启动 5 个微服务实例工程,此时控制台上输出的日志信息就变了。在这里,笔者通过推荐微服务的 Swagger UI
页面调用了首页接口,控制台中输出的日志内容如下,包括基础的日志信息、MyBatis
执行的日志信息及 OpenFeign
调用时的日志信息。
推荐微服务实例中输出的日志信息:

商品微服务实例中输出的日志信息:

因篇幅有限,这里只给出了部分日志。读者可自行测试在调用其他功能时会输出哪些日志。微服务架构项目中整合 Spring Cloud Seluth
完成。
另外,当前的日志配置级别为 debug
,级别很低,因此输出的日志是非常丰富的,在开发环境、测试环境或 beta
环境中可以使用,在生产环境中一般不建议输出如此丰富的日志信息,可以适当调高级别。