在某些 API 调用上禁用 Feign 登录
Disable Feign logging on some API calls
我正在使用以下配置为使用 feign
进行的 API 调用启用日志记录
#Feign properties
feign:
client:
config:
default:
loggerLevel: full
我的应用程序正在调用 3 APIs 并且假装正在为所有 3 APIs 正确记录请求和响应 JSON。我想为 API 之一禁用此日志记录。你能告诉我必要的配置吗?提前致谢
如果你有 3 个不同的 feign 客户端用于 3 个 API,那么你可以简单地以这种方式覆盖日志级别(假设你的 feign 客户端被称为 "feignClient2"):
#Feign properties
feign:
client:
config:
default:
loggerLevel: full
feignClient2:
loggerLevel: none
但是如果你有一个 feign client 用于 3 个端点,那么任务就会变得更加复杂。您可以继承 feign logger class (or any of its children classes, f.e. Slf4jLogger,如果您现在使用它)并覆盖它的 logRequest
和 logAndRebufferResponse
方法以不为特定端点记录任何内容(您可以从 request
获取所需信息和 response
方法参数)。然后用你自己的记录器添加 FeignLoggerFactory
bean:
@Bean
public FeignLoggerFactory feignLoggerFactory() {
return new DefaultFeignLoggerFactory(new CustomLogger());
}
它将覆盖 FeignClientsConfiguration 中的默认值 FeignLoggerFactory
。
总而言之,我建议您使用第一个选项(使用单独的 feign 客户端)。但是如果你选择第二种,如果你提供你的代码示例,我可以帮你做。
我正在使用以下配置为使用 feign
进行的 API 调用启用日志记录#Feign properties
feign:
client:
config:
default:
loggerLevel: full
我的应用程序正在调用 3 APIs 并且假装正在为所有 3 APIs 正确记录请求和响应 JSON。我想为 API 之一禁用此日志记录。你能告诉我必要的配置吗?提前致谢
如果你有 3 个不同的 feign 客户端用于 3 个 API,那么你可以简单地以这种方式覆盖日志级别(假设你的 feign 客户端被称为 "feignClient2"):
#Feign properties
feign:
client:
config:
default:
loggerLevel: full
feignClient2:
loggerLevel: none
但是如果你有一个 feign client 用于 3 个端点,那么任务就会变得更加复杂。您可以继承 feign logger class (or any of its children classes, f.e. Slf4jLogger,如果您现在使用它)并覆盖它的 logRequest
和 logAndRebufferResponse
方法以不为特定端点记录任何内容(您可以从 request
获取所需信息和 response
方法参数)。然后用你自己的记录器添加 FeignLoggerFactory
bean:
@Bean
public FeignLoggerFactory feignLoggerFactory() {
return new DefaultFeignLoggerFactory(new CustomLogger());
}
它将覆盖 FeignClientsConfiguration 中的默认值 FeignLoggerFactory
。
总而言之,我建议您使用第一个选项(使用单独的 feign 客户端)。但是如果你选择第二种,如果你提供你的代码示例,我可以帮你做。