48

我在 python 中使用日志记录模块:

import logging, sys
logger= logging.getLogger(__file__)
logging.basicConfig(stream = sys.stderr, level=logging.DEBUG, format='%(filename)s:%(lineno)s %(levelname)s:%(message)s')
logger.debug("Hello World")

现在,在我设置了基本配置之后line 3,我想要一个命令行参数,可以将输出流从 sys.stderr 更改为文件。

我已阅读文档,它说如果两者filenamestream同时存在,stream则忽略。

basicConfig现在,我想知道在我已经完成之后如何将流更改为文件line 3

4

1 回答 1

90

如果您查看 的 Python 源代码logging/__init__.py,您会看到basicConfig()通过调用addHandler(). 如果您想从头开始,您可以删除所有现有的处理程序,然后basicConfig()再次调用。

# Example to remove all root logger handlers and reconfigure. (UNTESTED)
import logging

# Remove all handlers associated with the root logger object.
for handler in logging.root.handlers[:]:
    logging.root.removeHandler(handler)

# Reconfigure logging again, this time with a file.
logging.basicConfig(filename = 'myfile.log', level=logging.DEBUG, format='%(filename)s:%(lineno)s %(levelname)s:%(message)s')
于 2012-08-28T11:24:26.167 回答