如何从 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 回滚缓冲区限制
Anaconda ipython qtconsole 启动器