【发布时间】:2021-10-05 14:50:23
【问题描述】:
我试图为 oslo_log.log 配置日志格式以让日志上下文包含 文件名和行号。
日志配置好像变了,但是控制台的输出还是一样。
from oslo_config import cfg
from oslo_log import log
import oslo_log
CONF = cfg.CONF
DOMAIN = "demo"
log.register_options(CONF)
LOG = log.getLogger(__name__)
_DEFAULT_LOGGING_CONTEXT_FORMAT = ('%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s')
log.set_defaults(_DEFAULT_LOGGING_CONTEXT_FORMAT, _DEFAULT_LOG_LEVELS)
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")
print(CONF.logging_context_format_string)
没有 log.set_defaults() 的输出:
2021-10-05 10:48:02.438 28234 INFO __main__ [-] Welcome to Oslo Logging
2021-10-05 10:48:02.439 28234 WARNING __main__ [-] A warning occurred
2021-10-05 10:48:02.439 28234 ERROR __main__ [-] An error occurred
%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
使用 log.set_defaults() 输出:
2021-10-05 10:48:31.376 28246 INFO __main__ [-] Welcome to Oslo Logging
2021-10-05 10:48:31.377 28246 WARNING __main__ [-] A warning occurred
2021-10-05 10:48:31.378 28246 ERROR __main__ [-] An error occurred
%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
为什么对象 LOG 的行为与配置未更改时的行为相同?
【问题讨论】:
-
不确定我是否理解您的问题。配置不会改变日志的输出吗?
-
是的,我调用了 set_defaults(),试图覆盖 logging_context_format_string 的默认值。
-
看我的回答,但你真的想做
CONF.set_override('logging_default_format_string', '%(asctime)s')之类的事情 -
如果答案不够,请告诉我。
标签: python logging formatting openstack