一、概述
在本教程中,我们将描述如何让 Feign 客户端登录到我们的 Spring Boot 应用程序。此外,我们将看看它的不同类型的配置。要复习我们 Feign 客户端,请查看综合指南。
2.假客户端
**Feign是一个声明式 Web 服务客户端,它通过处理注释为模板化请求来工作。**使用 Feign 客户端,我们大量样板代码来发出 HTTP API 请求。我们只需要一个动态的一个带注释的接口。因此,实际的实现将在运行时创建。
3.日志配置
佯客户端日志记录帮助我们更好地查看已发出的请求。application.
package
中包含我们的假死端的客户的class
或包的春天引导记录日志级别设置为DEBUG
properties
文件.
让我们为一个类似的日志级别属性:
logging.level.<packageName>.<className> = DEBUG
或者,如果我们有一个包含所有假装客户端的包,我们可以为整个包添加它:
logging.level.<packageName> = DEBUG
接下来,我们需要假装客户端设置日志级别。请注意,上一步只是为了可以记录日志。
有四种记录水平的选择:
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 API。我们将假装客户端的帮助下检索所有用户。
下面,我们将声明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 客户端记录日志,以及如何实现它。我们有很多方法可以根据我们的需要配置它。
0 评论