gpt4 book ai didi

python - 日志记录模块不在 IPython 中打印

转载 作者:太空狗 更新时间:2023-10-29 21:14:04 25 4
gpt4 key购买 nike

以下代码确实在“ipython qtconsole”中打印“我想要打印”,但它不会在普通 IPython 中打印。

import logging
import logging.handlers

log = logging.getLogger()
f = logging.Formatter("%(asctime)s - %(module)s. %(funcName)s - %(levelname)s - %(message)s")
fh = logging.handlers.TimedRotatingFileHandler('log.txt', 'W6')
fh.setFormatter(f)
log.addHandler(fh)
log.setLevel(logging.INFO)
log.info('I want this to print')

但是在“IPython qtconsole”中我遇到了不同的问题,我试图解释这些问题 here (进展不顺利,无需阅读!)。

你能告诉我为什么吗?

编辑:我使用 Python 2.7

EDIT2:也许我真的只需要添加 logging.StreamHandler。

最佳答案

似乎 qtconsoleroot 记录器添加了一个处理程序:

In [1]: import logging
...: root = logging.getLogger()
...: root.handlers
...:
Out[1]: [<logging.StreamHandler at 0x7fd8e00e1f98>]

当使用普通的 python 解释器或只是 ipython 时:

In [1]: import logging

In [2]: root = logging.getLogger()

In [3]: root.handlers
Out[3]: []

如果您希望两者的行为相同,您应该将 StreamHandler 添加到普通 ipython 的根记录器,或者删除 StreamHandler来自 qtconsole 解释器。

如果你想要前者只需添加:

root = logging.getLogger()
root.addHandler(logging.StreamHandler())

如果您想要后者,添加您自己的处理程序之前,执行:

for handler in root.handlers[:]:
root.removeHandler(handler)

请注意,IPython 已经提供了一些用于记录到文件的机制。参见 the documentation .如果你只想在 ipython 中使用代码,使用它的魔法可能会更简单。

关于python - 日志记录模块不在 IPython 中打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24259952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com