【发布时间】:2020-01-27 12:29:03
【问题描述】:
我正在尝试掌握 Python 的日志记录模块,坦率地说,到目前为止还无法实现。目前我的主脚本中有一个“主”记录器:
logger = logging.getLogger(__name__)
handler = logging.FileHandler('debug.log')
handler.setFormatter(logging.Formatter('%(levelname)s: %(asctime)s: %(name)s: %(message)s'))
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.debug(
'{} run for {} using {} values.'.format(
skill, str(datetime.now()), key, mode
)
)
我在导入的模块中有一个辅助记录器:
logger = logging.getLogger(__name__)
handler = logging.FileHandler('debug.log')
handler.setFormatter(logging.Formatter('%(levelname)s: %(asctime)s: %(name)s: %(message)s'))
logger.addHandler(handler)
但是,尽管我告诉两个记录器只记录到一个文件(两者都只有我设置的处理程序),但我仍然从根记录器打印到 stout 的信息。调用 logging.root.handlers 显示记录器有一个 StreamHandler,它只在导入包含第二个模块的模块时出现。
我解决附加流的黑客方法是从根处理程序中删除。但是,这感觉像是一个非规范的解决方案。我假设我以某种方式错误地实现了模块,而不是模块的预期功能。您打算如何以这种分层方式正确设置记录器?
【问题讨论】:
标签: python-2.7 logging