# feign打印调用日志
开发测试环境排查问题方便,开启feign打印调用日志
# openfeign依赖的引入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
1
2
3
4
5
2
3
4
5
# feignClient的编写
package com.reservation.qywechat.feign.member;
import com.agile.common.jars.struct.dto.ApiMessage;
import com.reservation.qywechat.feign.member.dto.GetUsernIfoDTO;
import com.reservation.qywechat.feign.member.dto.SendSubscribeMessageResponse;
import com.reservation.qywechat.feign.member.vo.GetUserInfoVO;
import com.reservation.qywechat.model.vo.SendReservationTemplateVO;
import feign.Headers;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
/**
* @version V1.0
* @Description:
* @author: warren
* @date: 2023/8/23 16:49
*/
@FeignClient(name = "mpmember")
public interface MiniWechatUserClient {
@RequestMapping("/mpmember/api/wx/sendWxSubscribeMessage")
ApiMessage<List<SendSubscribeMessageResponse>> sendWxSubscribeMessage(@RequestBody SendReservationTemplateVO sendReservationTemplateVO,
@RequestHeader("appId") String appId,
@RequestHeader("tenantId") String tenantId,
@RequestHeader("Accept") String contentType);
@RequestMapping("/mpmember/api/wx/getUserInfo")
ApiMessage<GetUsernIfoDTO> getUserInfo(@RequestBody GetUserInfoVO getUserInfoVO,
@RequestHeader("appId") String appId,
@RequestHeader("tenantId") String tenantId,
@RequestHeader("Accept") String contentType
);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# feign调用
GetUserInfoVO getUserInfoVO = new GetUserInfoVO();
getUserInfoVO.setAppId(appId);
getUserInfoVO.setMiniAppUserId(userId);
ApiMessage<GetUsernIfoDTO> userInfo = miniWechatUserClient.getUserInfo(getUserInfoVO, appId, tenantId, contentType);
if (Objects.isNull(userInfo) || Objects.isNull(userInfo.getData())) {
Asserts.check(true, "用户不存在");
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 开启feign的调用日志
日志级别 NONE:没有日志记录 BASIC:记录请求方法、URL以及响应状态代码和执行时间 HEADERS:记录基本信息以及请求和响应头信息 FULL:记录基本信息以及请求和响应头信息、请求和响应体信息
feign: #feign日志打印
client:
config:
mpmember:
loggerLevel: full
logging:
level:
com.reservation.qywechat.feign.member.MiniWechatUserClient: debug
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 第二种方式以java代码
Configuration文件方式,feignClient里面引入上述FeignConfiguration.class配置类
import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
public class FeignConfiguration {
@Bean
Logger.Level feignLoggerLevel() {
//这里记录所有,根据实际情况选择合适的日志level,此处取值共有四个NONE、BASIC、HEADERS和FULL
return Logger.Level.BASIC;
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
@Component
@FeignClient(name = "user", url = "http://127.0.0.1:8080",configuration = FeignConfiguration.class)
public interface UserClient {
@PostMapping(value = "/test/getUserInfo",consumes = MediaType.APPLICATION_JSON_VALUE)
String getUserInfo(Model model);
}
1
2
3
4
5
6
7
2
3
4
5
6
7
最后yml配置具体日志级别
logging:
level:
# 指定某一个文件的日志级别
com.bc.feign.UserFeignClient: DEBUG
# 为所写服务应用的最顶层的包目录设置日志级别
1
2
3
4
5
6
2
3
4
5
6
# 相关资料
全量分析 阅读量: