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
: