如何在IPython QtConsole中使用标准库“logging”将日志记录到文件?

3
我发现在ipython中无法像在终端中那样记录日志到文件。如果我从控制台运行以下代码,则会创建aaa.log文件,但是如果我从ipython qtconsole运行它则不会创建。(我使用python 3.2.3和ipython:0.13.1)。我怀疑ipython自己的日志功能可能有问题。是否有办法也可以在ipython中使用这种“标准”的日志记录?但是将日志消息输出到qtconsole似乎是可行的。
import logging

logging.basicConfig(filename='aaa.log', filemode='w', level=logging.DEBUG) 

def my_method():
    logging.debug('This message should go to the log file 2')
    logging.info('So should this')
    logging.warning('And this, too')

if __name__=='__main__':
    my_method()

我在这里找到了我的问题的答案:https://dev59.com/xVbTa4cB1Zd3GeqP9Uth - ddd
1个回答

1
我有一个和你类似的设置,一切都正常。您确定在正确的目录中搜索文件吗?您可以使用以下命令来检查当前目录(日志文件将写入该目录):
>>> import os
>>> os.path.abspath(os.curdir)

您也可以尝试指定完整路径,如filename="/path/to/aaa.log"


谢谢,你的答案帮助我找到了真正的问题: 它可以按预期工作(使用相对路径和绝对路径),但只有在第一次运行脚本时。当我在脚本中编辑文件名('aaa.log')并使用“run scriptname.py”重新运行它时,它不会使用更改后的版本,因此日志文件不会被创建。当我重新启动ipython控制台时,它可以正常工作。你是不是也遇到同样的问题? - ddd
我只是想把名称改为“aaa2.log”,以便创建一个新文件。然而,最终我发现在交互式会话中不应该使用logging.basicConfig()。 - ddd

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