了解Python记录器名称

托马斯·约翰逊

我已按照命名Python记录器中所述的做法命名了我的Python记录

如果我使用basicConfig(),一切都会正常。但是现在我正尝试使用配置文件和dictConfig()在运行时配置记录器。

http://docs.python.org/2/library/logging.config.html#dictionary-schema-details上的文档似乎说我可以在字典中有一个“ root”键来配置根记录器。但是,如果仅配置此记录器,则不会得到任何输出。

这是我所拥有的:

logging_config.yaml

version: 1
formatters:
  simple:
    format: '%(asctime)s - %(name)s - %(levelname)s - %(pathname)s:%(lineno)s - %(message)s'
    datefmt: '%Y%m%d %H:%M:%S'

handlers:
  console:
    class: logging.StreamHandler
    level: DEBUG
    formatter: simple
    stream: ext://sys.stdout
  file:
    class: logging.FileHandler
    level: DEBUG
    formatter: simple
    filename: 'test.log'
    mode: "w"

# If I explicitly define a logger for __main__, it works
#loggers: 
#  __main__:
#    level: DEBUG
#    handlers: [console, file]
root:
  level: DEBUG
  handlers: [console, file]

test_log.py

import logging
logger = logging.getLogger(__name__)
import logging.config
import yaml

if __name__ == "__main__":
    log_config = yaml.load(open("logging_config.yaml", "r"))
    logging.config.dictConfig(log_config)
    #logging.basicConfig() #This works, but dictConfig doesn't
    logger.critical("OH HAI")
    logging.shutdown()

为什么这不会产生任何日志记录输出,以及修复它的正确方法是什么?

维奈·萨吉普(Vinay Sajip)

原因是您尚未disable_existing_loggers: false在YAML中指定,并且__main__记录器在dictConfig调用时已经存在因此该记录器被禁用(因为未在配置中显式命名该记录器-如果命名,则未禁用)。

只需将该行添加到您的YAML中:

version: 1
disable_existing_loggers: false
formatters:
  simple:
  ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

了解Python记录器名称

来自分类Dev

Python记录器,打印没有父名称的子记录器%(name)

来自分类Dev

Python记录器混乱

来自分类Dev

Python默认记录器已禁用

来自分类Dev

如何实现全局Python记录器?

来自分类Dev

Python记录器文件异常

来自分类Dev

多个模块的Python多重记录器

来自分类Dev

线程异常的python记录器

来自分类Dev

全局名称记录器不是通过类定义的吗?

来自分类Dev

log4j-配置记录器名称

来自分类Dev

忘记了CLI记录器软件的名称

来自分类Dev

java logback自定义记录器名称

来自分类Dev

是否可以将记录器与名称分开?

来自分类Dev

AutoIt记录器

来自分类Dev

在Python中使用root记录器或命名记录器更好吗

来自分类Dev

Python日志记录,如何过滤特定的记录器

来自分类Dev

使用Python记录和继承记录器的配置

来自分类Dev

Python按键记录器不会记录UA提示按键

来自分类Dev

Python日志记录,如何过滤特定的记录器

来自分类Dev

用于异常记录的 Python 记录器处理程序配置

来自分类Dev

如何在python中创建非root记录器

来自分类Dev

Python记录器:不会覆盖原始日志吗?

来自分类Dev

Python记录器未选择配置时间格式。

来自分类Dev

Python记录器不符合设置的级别

来自分类Dev

如何从python记录器获取文件名

来自分类Dev

防止Python记录器中出现错误的重复输出

来自分类Dev

在Try / Except中设置Python记录器的级别

来自分类Dev

通过通配符设置python记录器级别

来自分类Dev

为什么我不能更改python记录器的级别?