Spring Boot应用日志级别配置:多环境设置与包级别优化咨询
Spring Boot日志配置:Dev与Prod环境差异及优化建议
一、Dev(开发)环境配置
1. File部分
开发阶段核心依赖控制台日志排查问题,没必要持久化大量日志文件,推荐关闭file日志输出,直接删掉logging.pattern.file及相关文件路径配置;如果需要临时留存日志,也可以设置一个小容量的临时日志:
logging: file: name: ./logs/dev-temp.log max-size: 10MB max-history: 3 pattern: console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
2. Level部分
开发需要足够的调试信息,建议调整为:
logging: level: org.springframework: debug # 能看到Spring启动、配置加载的细节,方便排查配置问题 org.hibernate: debug # 输出SQL语句及参数,调试ORM操作更高效 com.company: debug # 自己业务代码的调试日志全量输出,快速定位bug
二、Prod(生产)环境配置
1. File部分
生产环境必须做日志持久化+滚动策略,避免磁盘被日志占满:
logging: file: name: ./logs/prod-app.log max-size: 100MB # 单个日志文件最大100MB max-history: 30 # 保留30天的历史日志 total-size-cap: 5GB # 所有日志总容量不超过5GB pattern: file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
另外生产环境可以关闭控制台日志(删掉logging.pattern.console),减少资源消耗,所有排查依赖日志文件即可。
2. Level部分
生产要严格控制日志输出量,避免性能损耗和冗余信息:
logging: level: root: warn # 兜底级别,未配置的包只输出警告及以上日志 org.springframework: error # 只记录框架级错误,过滤启动、配置等冗余日志 org.hibernate: error # 生产不需要SQL细节,只记录ORM操作错误 com.company: info # 只记录业务关键节点(如订单创建、支付完成),排查问题够用且日志量可控
三、关于com.company基础包的日志级别
完全有必要设置,这是管控业务代码日志输出的核心:
- 开发时设
debug:能看到代码里的调试细节,快速定位bug - 生产时设
info:记录业务关键流程,方便线上问题排查;注意不要在日志里输出敏感信息(如用户密码、手机号)
四、Level部分的增减建议
需要添加的级别
root:必须设置兜底级别,避免未配置的第三方包输出大量冗余日志,开发设info、生产设warn- 针对使用的第三方框架,按需添加级别控制:
- Redis客户端(如
org.redisson/redis.clients.jedis):开发设debug、生产设warn - MQ组件(如
org.apache.kafka):开发设info、生产设warn - HTTP客户端(如
org.apache.http):开发设debug、生产设warn
- Redis客户端(如
需要调整的现有级别
- 开发环境不要把
org.springframework和org.hibernate设为error,否则框架启动、ORM操作的关键调试信息会被过滤,排查问题难度陡增 - 生产环境不要长期把
com.company设为debug,会产生海量日志,占用磁盘空间还影响应用性能
内容的提问来源于stack exchange,提问作者user21263160
相关产品推荐
相关产品推荐

