ApiBoot Logging
支持整合服务注册中心
(Eureka、Consul、Nacos Discovery、Zookeeper...)进行上报请求日志,Logging Client
会从服务注册中心内找到指定ServiceID
的Logging Admin
具体可用实例,经过SpringCloud Discovery
内部的负载均衡策略返回Logging Admin
的部署服务器IP
以及端口号
,这样Logging Client
就能够完成请求日志的上报流程。html
博客原文:blog.yuqiyu.com/apiboot-log…java
咱们先来搭建一个Eureka Server
,请访问【搭建服务注册中心Eureka Server】文章内容查看具体搭建流程。git
既然使用的是服务注册中心
,咱们须要将以前章节将的Logging Admin
进行简单的改造,添加Eureka
客户端相关的依赖,并在application.yml
配置文件内添加Eureka Server
的相关配置,若是对Logging Admin
不了解的同窗能够访问【将ApiBoot Logging采集的日志上报到Admin】查看文章内容,文章底部有源码。spring
咱们须要将Logging Admin
注册到Eureka Server
,对于Eureka Server
而言Logging Admin
是一个客户端
(Eureka Client)角色。json
咱们在pom.xml
文件内添加以下配置:api
<!--Eureka Client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
复制代码
添加依赖后咱们还须要在XxxApplication
入口类添加@EnableDiscoveryClient
注解来启用Eureka Client
的相关功能,以下所示:bash
@SpringBootApplication
@EnableLoggingAdmin
@EnableDiscoveryClient
public class LoggingAdminApplication {
/** * logger instance */
static Logger logger = LoggerFactory.getLogger(LoggingAdminApplication.class);
public static void main(String[] args) {
SpringApplication.run(LoggingAdminApplication.class, args);
logger.info("{}服务启动成功.", "日志管理中心");
}
}
复制代码
咱们在application.yml
配置文件内添加链接到Eureka Server
的相关配置信息,以下所示:服务器
# Eureka Config
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10000/eureka/
instance:
prefer-ip-address: true
复制代码
Logging Client
其实就是咱们的业务服务,不要被名称误导,咱们在本章源码内建立一个user-service
模块来做为测试的业务服务,咱们也须要将user-service
做为客户端注册到Eureka Server
,可参考【使用ApiBoot Logging进行统一管理请求日志】文章内容建立项目。架构
在pom.xml
配置文件内添加以下依赖:app
<!--Eureka Client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
复制代码
添加依赖后一样须要启用Eureak Client
,这是必不可少的步骤,在咱们的入口类XxxApplication
上添加以下所示:
@SpringBootApplication
@EnableDiscoveryClient
@EnableLoggingClient
public class UserServiceApplication {
/** * logger instance */
static Logger logger = LoggerFactory.getLogger(UserServiceApplication.class);
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
logger.info("{}服务启动成功.", "用户");
}
}
复制代码
咱们在application.yml
配置文件内添加Eureka Server
的相关配置信息,以下所示:
# Eureka Config
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10000/eureka/
instance:
prefer-ip-address: true
复制代码
这是本章的核心内容,咱们在以前都是经过api.boot.logging.admin.server-address
参数进行配置Logging Admin
的IP地址
以及服务端口号
,而本章咱们就要借助服务注册中心
(Eureka Server)来从实例列表中获取Logging Admin
服务信息,ApiBoot Logging
提供了一个配置参数api.boot.logging.discovery.service-id
进行配置Logging Admin
的ServiceID
,也就是spring.application.name
参数对应的值,以下所示:
# ApiBoot Config
api:
boot:
logging:
discovery:
# Logging Admin ServiceID
service-id: logging-admin
show-console-log: true
format-console-log-json: true
复制代码
每当咱们发起请求时,Logging Client就会从
Eureak Server
内获取ServiceID = logging-admin
的服务列表,负载均衡筛选后获取一个可用的实例信息进行上报日志。
咱们将本章源码内用到的三个服务eureka-server
、logging-admin
、user-service
依次启动。
经过curl
命令访问user-service
提供的Controller
地址,以下所示:
➜ ~ curl http://localhost:9090/test\?name\=admin
你好:admin
复制代码
咱们能够在logging-admin
控制台看到user-service
上报的请求日志信息,以下所示:
Receiving Service: 【user-service -> 127.0.0.1】, Request Log Report,Logging Content:[
{
"endTime":1572921905360,
"httpStatus":200,
"requestBody":"",
"requestHeaders":{
"host":"localhost:9090",
"user-agent":"curl/7.64.1",
"accept":"*/*"
},
"requestIp":"0:0:0:0:0:0:0:1",
"requestMethod":"GET",
"requestParam":"{\"name\":\"admin\"}",
"requestUri":"/test",
"responseBody":"你好:admin",
"responseHeaders":{},
"serviceId":"user-service",
"serviceIp":"127.0.0.1",
"servicePort":"9090",
"spanId":"d97c515f-a147-4f89-9c59-398905c95a73",
"startTime":1572921905336,
"timeConsuming":24,
"traceId":"5e6c0357-1625-4a28-af18-cacdddba146a"
}
]
复制代码
自此咱们已经成功的整合Eureka
与ApiBoot Logging
。
ApiBoot Logging
内部提供的两种获取Logging Admin
服务信息的方式,分别是:service-id
、server-address
,都是比较经常使用的,使用service-id
方式能够无缝整合SpringCloud
进行使用,而链路信息能够经过Openfeign
、RestTemplate
进行传递,这会在咱们后期的知识点中讲到。
若是您喜欢本篇文章请为源码仓库点个Star
,谢谢!!! 本篇文章示例源码能够经过如下途径获取,目录为SpringBoot2.x/apiboot-logging-integrates-eureka-report-logs
: