排查问题时把包级别调到 DEBUG,重启后日志里仍然只有 INFO,actuator 的 loggers 端点显示那个包的有效级别是 INFO。日志里能对上时间点,这种反而好排。
配置文件里根 logger 设为 INFO,子 logger 的可加性让它继承根级别,单独设的 DEBUG 被后加载的配置文件覆盖。启动参数里的 logging.level 优先级更高。这一点先确认清楚,后面就不用反复试。
curl -X POST http://localhost:8080/actuator/loggers/com.acme.order \
-H 'Content-Type: application/json' \
-d '{"configuredLevel":"DEBUG"}'
「日志级别覆盖」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。同一份配置存在多处的,先确认改的是被加载的那一份。
处理上按这个顺序:先查有效级别 确认最终生效的是哪一层;检查启动参数和环境变量里有没有同名配置;把目标包写成独立 logger 并设 additivity 为 false;改完不重启 用 actuator 动态调级别验证。
结果对不对很好判断,目标包的 DEBUG 日志立即出现 其他包仍然是 INFO。
