1. 概述
在本教程中,我们将描述如何启用 Feign 客户端登录到我们的 Spring Boot 应用程序。此外,我们还将了解它的不同类型的配置。要重温 Feign 客户端,请查看我们的综合指南。
2. 假装客户端
Feign 是一个声明性 Web 服务 客户端 ,它通过将注释处理为模板化请求来工作。 使用 Feign 客户端,我们摆脱了样板代码来发出 HTTP API 请求。我们只需要放入一个带注释的接口即可。因此,实际的实现将在运行时创建。
3. 日志配置
假客户端日志记录可以帮助我们更好地查看已发出的请求。 要启用日志记录,我们需要将应用程序中包含 feign 客户端的 类 或 包的 Spring Boot 日志记录级别设置为 DEBUG 。 属性 文件 。
让我们设置一个类的日志记录级别属性:
logging.level.<packageName>.<className> = DEBUG
或者,如果我们有一个包,其中放置了所有假客户端,我们可以将其添加到整个包中:
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 中设置它。 让我们在这里引用我们的 feign 客户端的名称,在我们的例子中是 foo-client :
feign.client.config.foo-client.loggerLevel = full
或者,我们可以覆盖所有 feign 客户端的默认配置级别:
feign.client.config.default.loggerLevel = full
4. 示例
对于此示例,我们配置了一个客户端以从JSONPlaceHolder API读取。我们将在 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] com.baeldung.UserClient : [UserClient#getUsers] ---> END HTTP (0-byte body)
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] com.baeldung.UserClient : [UserClient#getUsers] <--- HTTP/1.1 200 OK (902ms)
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] com.baeldung.UserClient : [UserClient#getUsers] access-control-allow-credentials: true
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] com.baeldung.UserClient : [UserClient#getUsers] cache-control: max-age=43200
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] com.baeldung.UserClient : [UserClient#getUsers] content-type: application/json; charset=utf-8
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] com.baeldung.UserClient : [UserClient#getUsers] date: Mon, 31 May 2021 14:21:54 GMT
// more headers
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] com.baeldung.UserClient : [UserClient#getUsers] [
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
// more user details
},
// more users objects
]
2021-05-31 17:21:55 DEBUG 2992 - [thread-1] com.baeldung.UserClient : [UserClient#getPosts] <--- END HTTP (5645-byte body)
在日志的第一部分,我们可以看到记录的 请求 ; URL 端点及其 HTTP GET 方法。在本例中,由于它是 GET 请求 ,因此我们没有请求正文。
第二部分包含 响应 。它显示响应的 标题 和 正文 。
5. 结论
在这个简短的教程中,我们了解了 Feign 客户端日志记录机制以及如何启用它。我们看到有多种方法可以根据我们的需要配置它。
与往常一样,本教程中显示的示例可以在 GitHub 上找到。