如何从 ipython qtconsole 使用标准库“记录”记录到文件?

Posted

技术标签:

【中文标题】如何从 ipython qtconsole 使用标准库“记录”记录到文件?【英文标题】:how can I log to a file with the standard lib "logging" from the ipython qtconsole? 【发布时间】:2013-06-26 12:25:30 【问题描述】:

我注意到我无法从终端登录到 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()

【问题讨论】:

我在这里找到了我的问题的答案:***.com/questions/5691130/… 【参考方案1】:

我的设置与您类似,一切正常。您确定要在正确的目录中搜索文件吗?您可以使用以下命令检查您的当前目录(将写入日志文件的目录):

>>> import os
>>> os.path.abspath(os.curdir)

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

【讨论】:

谢谢,您的回答帮助我找到了真正的问题:它可以正常工作(相对路径和绝对路径),但仅在我第一次运行脚本时。当我在脚本中编辑文件名('aaa.log')然后使用“run scriptname.py”重新运行它时,它不会使用更改后的版本,因此不会创建日志文件。当我重新启动 ipythonconsole 时,它​​可以工作。对您来说是一样的还是按预期工作? 我的意思是将名称更改为“aaa2.log”,以便创建一个新文件。但是我终于发现不应该将 logging.basicConfig() 用于交互式会话。

以上是关于如何从 ipython qtconsole 使用标准库“记录”记录到文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何运行连接到 ipython3 实例的 qtconsole?

如何增加 ipython qtconsole 回滚缓冲区限制

嵌入 ipython qtconsole 并传递对象

Anaconda ipython qtconsole 启动器

iPython/jupyter qtconsole 无法在 anaconda 2.4.0 中启动

在 IPython qtconsole 中确定终端宽度