Feign 日誌配置
- Spring Cloud
- Feign
1. 概述
在本教程中,我們將描述如何讓 Feign 客戶端登錄到我們的 Spring Boot 應用程序。此外,我們將看看它的不同類型的配置。要復習 Feign 客戶端,請查看我們的綜合指南。
2. 假客戶端
**Feign是一個聲明式 Web 服務客戶端,它通過將註釋處理為模板化請求來工作。**使用 Feign 客戶端,我們擺脫了樣板代碼來發出 HTTP API 請求。我們只需要放入一個帶註釋的接口。因此,實際的實現將在運行時創建。
3. 日誌配置
Feign 客戶端日誌記錄幫助我們更好地查看已發出的請求。 application.
package
中包含我們的 feign 客戶端的class
或包的 Spring Boot 日誌記錄級別設置為DEBUG
properties
文件.
讓我們為一個類設置日誌級別屬性:
logging.level.<packageName>.<className> = DEBUG
或者,如果我們有一個包含所有 feign 客戶端的包,我們可以為整個包添加它:
logging.level.<packageName> = DEBUG
接下來,我們需要為 feign 客戶端設置日誌級別。請注意,上一步只是為了啟用日誌記錄。
有四種日誌記錄級別可供選擇:
-
NONE:
不記錄(默認) -
BASIC:
記錄請求方法和 URL 以及響應狀態代碼和執行時間 -
HEADERS:
記錄基本信息以及請求和響應標頭 -
FULL
:記錄請求和響應的標頭、正文和元數據
我們可以通過 java 配置或在我們的屬性文件中配置它們。
3.1. Java配置
我們需要聲明一個配置類,我們稱之為FeignConfig
:
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
}
之後,我們將配置類綁定到我們的假客戶端類FooClient
:
@FeignClient(name = "foo-client", configuration = FeignConfig.class)
public interface FooClient {
// methods for different requests
}
3.2.使用屬性
第二種方法是在我們的application.properties.
讓我們在這裡引用我們的假客戶端的名稱,在我們的例子中是foo-client
:
feign.client.config.foo-client.loggerLevel = full
或者,我們可以覆蓋所有 feign 客戶端的默認配置級別:
feign.client.config.default.loggerLevel = full
4. 例子
在這個例子中,我們配置了一個客戶端來讀取JSONPlaceHolder APIs 。我們將在 feign 客戶端的幫助下檢索所有用戶。
下面,我們將聲明UserClient
類:
@FeignClient(name = "user-client", url="https://jsonplaceholder.typicode.com", configuration = FeignConfig.class)
public interface UserClient {
@RequestMapping(value = "/users", method = RequestMethod.GET)
String getUsers();
}
我們將使用我們在配置部分創建FeignConfig
請注意,日誌記錄級別仍然是Logger.Level.FULL
。
讓我們看看當我們調用/users
時日誌的外觀:
2021-05-31 17:21:54 DEBUG 2992 - [thread-1] com.baeldung.UserClient : [UserClient#getUsers] ---> GET https://jsonplaceholder.typicode.com/users HTTP/1.1
2021-05-31 17:21:54 DEBUG 2992 - [thread-1] org.1ju.UserClient : [UserClient#getUsers] ---> END HTTP (0-byte body)
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] org.1ju.UserClient : [UserClient#getUsers] <--- HTTP/1.1 200 OK (902ms)
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] org.1ju.UserClient : [UserClient#getUsers] access-control-allow-credentials: true
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] org.1ju.UserClient : [UserClient#getUsers] cache-control: max-age=43200
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] org.1ju.UserClient : [UserClient#getUsers] content-type: application/json; charset=utf-8
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] org.1ju.UserClient : [UserClient#getUsers] date: Mon, 31 May 2021 14:21:54 GMT
// more headers
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] org.1ju.UserClient : [UserClient#getUsers] [
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "[email protected]",
// more user details
},
// more users objects
]
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] org.1ju.UserClient : [UserClient#getPosts] <--- END HTTP (5645-byte body)
在日誌的第一部分,我們可以看到記錄request
帶有他的 HTTP GET 方法的 URL 端點。在這種情況下,因為它是一個 GET request
,所以我們沒有請求正文。
第二部分包含response
。它顯示response.
headers
和body
5. 結論
在這個簡短的教程中,我們研究了 Feign 客戶端日誌記錄機制以及如何啟用它。我們看到有多種方法可以根據我們的需要配置它。