Python日志未保存到文件

14

我已经卡在这里一个小时了。我已经将日志插入到我的tkinter gui中,但无法使其工作。然后我开始删除部分,直到我得到非常python文档中的简化示例,但它仍无法工作。此时我没有其他可以删除的部分了。

代码如下:

import logging

LOG_FILENAME = r'logging_example.out'


logging.basicConfig(filename=LOG_FILENAME ,level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')

f = open(LOG_FILENAME, 'rt')
try:
    body = f.read()
finally:
    f.close()

print('FILE:')
print (body)

警告信息将被打印到标准输出,但文件不会生成。我正在运行Python 3.4 x64版本,使用Windows 7操作系统。这是Anaconda发行版,因此在Spyder中的IPython中运行。

我猜这应该可以正常工作。


这在从 shell 运行 python.exe 时有效。可能是您的环境出了问题。 - Jonas Byström
1个回答

15

正如Jonas Byström所指出的,这在Ipython之外是可行的。似乎Ipython在我有机会这样做之前配置了一个日志处理程序。另外,basicConfig如果已经存在处理程序,则不会起作用。因此,为了让它在Ipython中工作,必须做以下三件事之一:1)添加新的处理程序,或2)重新加载日志记录,或3)删除现有的处理程序。我在下面进行了第二项。

import logging
from imp import reload
reload(logging)
LOG_FILENAME = r'logging_example.out'


logging.basicConfig(filename=LOG_FILENAME ,level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')

f = open(LOG_FILENAME, 'rt')
try:
    body = f.read()
finally:
    f.close()

print('FILE:')
print (body)

查看以下链接获取更多信息: Logging in ipython; 同上


我也更喜欢选项2,因为它简单并且允许我对所有日志记录行为进行更大的控制。+1 - DaveL17

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接