You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo日志配置参数疑问:log_level、log_handler及模块级日志

Odoo日志配置参数全解析

1. log_level 与 log_handler 的核心作用

  • log_level:全局默认日志级别,用于设定所有未单独配置日志级别的logger的输出门槛,取值为小写级别(debug/info/warn/error)。
  • log_handler:细粒度日志处理器配置,格式为logger_name:LEVEL(空冒号:代表全局所有logger),LEVEL为大写级别(DEBUG/INFO/WARN/ERROR)。它可以针对单个或全部logger单独设定级别,优先级高于全局默认的log_level。

2. log_level = info 与 log_handler= :INFO 的差异

这两个配置的实际效果几乎一致,都是将全局所有logger的日志输出级别设为INFO:

  • log_level = info:通过全局默认值统一设置所有未单独配置的logger级别。
  • log_handler= :INFO:直接指定全局所有logger的级别为INFO,等同于覆盖全局默认设置。

3. 为何 log_level=error + log_handler=:INFO 仅输出ERROR级别?

这是Python日志系统的双层过滤逻辑导致的:
日志输出需要同时通过logger自身级别过滤和处理器级别过滤:

  1. log_level=error 把root logger的级别设为ERROR,意味着root logger只会将ERROR及更高级别的日志传递给处理器,INFO、DEBUG级别的日志在logger层就被过滤掉了。
  2. log_handler=:INFO 只是给root logger绑定了一个允许输出INFO及以上级别的处理器,但此时处理器根本接收不到INFO及以下的日志——因为logger已经把这些日志拦截了。

如果想让log_handler生效,需要保证logger的级别不高于处理器的级别。比如设置log_level=info + log_handler=:ERROR,此时logger允许INFO及以上日志通过,处理器只保留ERROR及以上,最终只会输出ERROR级别日志。

4. logger_<module_name> 配置的正确性与用法

这种配置是官方支持的正确用法,用于实现模块级的日志粒度控制:

  • 格式:logger_<module_name> = <level>,其中<module_name>是目标Odoo模块的名称(例如logger_sale = debug),<level>为小写日志级别。
  • 用途:针对特定模块单独调整日志级别,不会影响其他模块的全局配置。比如调试自定义模块my_module时,设置logger_my_module = debug,该模块的DEBUG级日志会被输出,其他模块仍遵循全局的log_level设置。

与其他参数的配合规则

  • logger_<module_name> 的优先级高于log_level和全局log_handler设置。
  • 若同时设置logger_my_module = error和log_handler=my_module:INFO,由于logger级别为ERROR,处理器即使设为INFO,最终也只会输出ERROR及以上级别的日志(logger先完成过滤)。
  • 通常的配合方式是:用log_level设置全局默认级别,再用logger_<module_name>针对需要调试或重点监控的模块单独调整级别(比如全局设为info,某个模块设为debug)。

内容的提问来源于stack exchange,提问作者Kaikus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 11:43:32