Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改日志记录';s';基本配置';已经设置好了_Python_Logging - Fatal编程技术网

Python 更改日志记录';s';基本配置';已经设置好了

Python 更改日志记录';s';基本配置';已经设置好了,python,logging,Python,Logging,我将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") 现在,在我设置了第3行的基本配置之后,我想要一个命

我将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")
现在,在我设置了第3行的基本配置之后,我想要一个命令行参数,可以将输出流从sys.stderr更改为文件

我已经阅读了文档,它说如果
文件名
同时存在,那么
将被忽略


现在,我想知道在我完成了
第3行
中的
basicConfig
之后,如何将流更改为文件?

如果您在Python源代码中查找
日志记录/\uu init\uuuuuuuuuuuupy
,您将看到
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')

另外,在这里使用列表理解删除所有处理程序,就像下面的代码更简单一样:)
[logging.root.removeHandler(handler)for handler in logging.root.handlers[:]
@KevinGuan列表理解用于构造列表。当您想在循环中运行语句时,请使用循环。这非常有用。我在一个函数中使用了这个解决方案,该函数使用basicConfig设置记录器。现在,当我调用这个内部循环时,我可以在每次迭代中记录到不同的单个日志文件。由于Python 3.8,
basicConfig
现在接受一个参数来删除现有的根处理程序。@Spack,你是说我们可以删除上面的第5+6行,并将第9行设置为类似于
logging.basicConfig(filename='myfile.log',…,force=True)的内容吗