摘要:默认情况下,Feign 不会打印请求/响应的详细信息,需显式开启:
在 Spring Cloud 中配置日志通常基于 Spring Boot 的日志框架(默认使用 Logback),以下是详细的配置方法和常见场景的实践:
1. 基础日志配置
在 application.yml 或 application.properties 中配置全局日志级别和输出格式:
# application.yml
logging:
level:
root: INFO
org.springframework.web: DEBUG
com.example: TRACE # 自定义包的日志级别
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
File:
name: logs/app.log # 日志输出到文件
max-size: 10MB # 单个文件最大大小
max-history: 7 # 保留最近7天的日志
2. Spring Cloud 组件日志配置
Feign 客户端日志
默认情况下,Feign 不会打印请求/响应的详细信息,需显式开启:
# application.yml
feign:
client:
config:
default:
loggerLevel: full # 可选值:none, basic, headers, full
或通过 java 配置类:
java
@Configuration
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel {
return Logger.Level.FULL;
}
}
确保 Feign 接口的 @FeignClient 注解中指定配置类:
java
@FeignClient(name = "service-name", configuration = FeignConfig.class)
public interface MyFeignClient { ... }
Hystrix 熔断日志
调整 Hystrix 日志级别:
logging:
level:
com.netflix.hystrix: DEBUG
Zuul 网关日志
启用 Zuul 请求日志:
logging:
level:
org.springframework.cloud.netflix.zuul: DEBUG
3. 自定义 Logback 配置
创建 logback-spring.xml 文件(优先级高于 application.yml),配置滚动策略和异步日志:
xml
logs/app.log
logs/app-%d{yyyy-MM-dd}.%i.log
10MB
7
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
4. 多环境日志配置
通过 Profile 区分不同环境:
# application-dev.yml
logging:
level:
root: DEBUG
file:
enabled: false # 开发环境不输出到文件
# application-prod.yml
logging:
level:
root: WARN
file:
name: /var/log/myapp/app.log
5. 集成 ELK 日志系统
输出 JSON 格式日志便于 Logstash 收集:
xml
复制
net.logstash.logback
logstash-logback-encoder
7.2
运行 HTML
6. 常见问题排查
日志不生效:检查依赖冲突(如排除 spring-boot-starter-logging 并替换为 Log4j2)。日志文件权限:生产环境需确保应用有权限写入日志目录。动态调整日志级别:通过 Spring Boot Actuator 的 /loggers 端点动态调整(需添加依赖 spring-boot-starter-actuator)。通过以上配置,可以灵活管理 Spring Cloud 微服务中的日志,满足开发调试和生产监控的需求。
来源:老客数据一点号