Feign的日志

一 介绍
很多场景下,需要了解Feign处理请求的具体要求,那么如何满足这种需求呢?
Feign对日志的处理非常灵活,可为每个Feign客户端指定日志记录策略,每个Feign客户端都会创建一个logger。默认情况下,logger的名称是Feigh接口的完整类名。需要注意的是,Feign的日志打印只会对DEBUG级别做出响应。
我们可以为每个Feign客户端配置各种的Logger.Level对象,告诉Feign记录哪些日志。Logger.Level的值有以下选择。
NONE,无记录(DEFAULT)。
BASIC,只记录请求方法和URL以及响应状态代码和执行时间。
HEADERS,记录基本信息以及请求和响应标头。
FULL,记录请求和响应的头文件,正文和元数据。
二 新建项目microservice-consumer-movie-feign-logging
三 编写Feign的配置类
package com.itmuch.cloud.config;
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
import feign.Logger;
 
@Configuration
public class FeignLogConfiguration {
  @Bean
  Logger.Level feignLoggerLevel() {
    return Logger.Level.BASIC;
  }
}
四 修改Feign的接口,指定配置类
package com.itmuch.cloud.study.user.feign;
 
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
import com.itmuch.cloud.config.FeignLogConfiguration;
import com.itmuch.cloud.study.user.entity.User;
 
@FeignClient(name = "microservice-provider-user", configuration = FeignLogConfiguration.class)
public interface UserFeignClient {
  @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  public User findById(@PathVariable("id") Long id);
}
五 修改application.yml
server:
  port: 8010
spring:
  application:
    name: microservice-consumer-movie
eureka:
  client:
    serviceUrl:
      defaultZone:http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true
logging:
  level:
    com.itmuch.cloud.study.user.feign.UserFeignClient: DEBUG # 将Feign接口的日志级别设置成DEBUG,因为Feign的Logger.Level只对DEBUG作出响应。
六 测试
1 启动eureka
2 启动user微服务
3 启动feign
4 访问http://localhost:8010/user/1
2018-06-17 14:31:40.350 DEBUG 3876 --- [provider-user-2] c.i.c.study.user.feign.UserFeignClient   : [UserFeignClient#findById] ---> GET http://microservice-provider-user/1 HTTP/1.1
2018-06-17 14:31:40.373 DEBUG 3876 --- [provider-user-2] c.i.c.study.user.feign.UserFeignClient   : [UserFeignClient#findById] <--- HTTP/1.1 200 (23ms)

 

转载于:https://my.oschina.net/xiaominmin/blog/3052946

Feign 是 Netflix 开源的一款声明式 HTTP 客户端,用于简化 HTTP API 的调用过程。它可以让你通过注解的方式非常方便地发送 HTTP 请求,并处理响应数据。 ### 使用 Feign 访问百度API 首先,你需要添加 Feign 和依赖到你的项目中。如果你使用的是 Spring Boot,通常会在 `pom.xml` 或者 `build.gradle` 文件中添加相应的依赖: #### Maven 示例 ```xml <dependencies> <!-- 添加 Feign 依赖 --> <dependency> <groupId>com.netflix.feign</groupId> <artifactId>feign-core</artifactId> <version>10.x.y</version> </dependency> <!-- 添加 Jackson JSON 库依赖,用于序列化和反序列化 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.x.y</version> </dependency> <!-- 添加 OkHttp 作为底层 HTTP 客户端 --> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.x.y</version> </dependency> </dependencies> ``` 接下来,在你的代码中创建一个 Feign 接口: ```java import com.google.gson.Gson; import feign.Feign; import feign.Logger; public class BaiduApiService { private static final Logger.Level FEIGN_LOG_LEVEL = Logger.Level.BASIC; // 可选择 BASIC、OFF 或者 FULL 等 public static void main(String[] args) { // 创建 FeignClient 实例并配置日志级别 Gson gson = new Gson(); Feign.Builder builder = Feign.builder() .encoder(new GsonEncoder(gson)) .decoder(new GsonDecoder(gson)) .logLevel(FEIGN_LOG_LEVEL); BaiduApiService api = builder.target(BaiduApiService.class, "https://www.baidu.com"); String result = api.getBaiduSearchResult("示例查询内容"); System.out.println(result); } interface BaiduApiService { @GET("/s") String getBaiduSearchResult(@QueryParam("wd") String query); } } ``` 在这个例子中,我们创建了一个名为 `BaiduApiService` 的 Feign 接口,并使用了默认的 `OkHttpClient` 作为底层的 HTTP 客户端。我们通过 `@GET` 注解指定了请求的方法以及 URL 中的查询参数 `wd`。 ### 相关问题: 1. **如何自定义 Feign 日志记录?** - 可以通过调整 `Logger.Level` 来改变日志级别的详细程度。 2. **为什么需要引入 Jackson JSON 库?** - Feign 默认使用 JSON 格式传输数据,Jackson 提供了强大的 JSON 序列化和反序列化功能,因此需要添加 Jackson 的依赖库。 3. **如果使用 Spring Boot 集成 Feign 怎么操作?** - 可以在Spring Boot应用的配置文件 (`application.properties` 或 `application.yml`) 中指定 Feign 的客户端配置项,例如超时时间、连接池大小等。同时可以在 Spring Bean 中注入 Feign 接口实例来进行使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值