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

oslo_log日志格式配置修改后控制台输出未生效问题咨询

问题原因
  1. 配置调用顺序错误
    oslo_log的log.set_defaults()方法必须在log.register_options(CONF)之前调用。register_options会将日志相关配置项的默认值加载到CONF对象中,先注册再修改默认值的操作不会同步到已经完成注册的CONF对象,后续log.setup()读取的仍是CONF中存储的原始默认配置。
  2. 配置项对应错误
    你修改的_DEFAULT_LOGGING_CONTEXT_FORMAT对应的是logging_context_format_string配置项,该格式仅在存在请求上下文的场景下生效,你当前测试用的无上下文普通日志,默认使用的是logging_default_format_string配置项,修改的配置本身就不适用于当前场景。
修复方案

调整配置调用顺序,同时修改普通日志对应的格式配置即可,修复后代码如下:

from oslo_config import cfg
from oslo_log import log 

CONF = cfg.CONF
DOMAIN = "demo"

# 提前定义所需配置
_DEFAULT_LOG_FORMAT = ('%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s')
_DEFAULT_LOG_LEVELS = ['demo=INFO']

# 先修改默认值,再注册配置
log.set_defaults(default_log_levels=_DEFAULT_LOG_LEVELS,
                 logging_default_format_string=_DEFAULT_LOG_FORMAT)
log.register_options(CONF)

LOG = log.getLogger(__name__)

log.setup(CONF, DOMAIN)

LOG.info("Welcome to Oslo Logging")
LOG.debug("A debugging message")
LOG.warning("A warning occurred")
LOG.error("An error occurred")

如果不想调整调用顺序,也可以在log.register_options执行后、log.setup执行前,直接修改CONF的对应配置项:

CONF.logging_default_format_string = _DEFAULT_LOG_FORMAT

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:27:03