如何在Python中初始化模块时启用日志记录?

时间:2014-03-28 22:32:11

标签: python logging module

我有以下代码:

#! /usr/bin/python
import logging
import test_log

def main():
    logging.error("hello")

if __name__ == '__main__':
    logging.basicConfig()

    main()

test_log定义为:

import logging

_logger = logging.getLogger(__name__)
_logger.warn('initializing ' + __name__)

执行主脚本将导致输出:

No handlers could be found for logger "test_log"
ERROR:root:hello

我认为这是因为import test_log语句将执行_logger = logging.getLogger(__name__); _logger.warn('initializing ' + __name__),而此时logging.basicConfig未执行。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:3)

如果您无法避免在导入时记录,请在test_log中的记录器中添加NullHandler实例。这将阻止“无处理程序......”消息。

此外,您有两次拨打basicConfig()。避免这种情况 - 只需拨打一个电话(if __name__ == '__main__')。