gpt4 book ai didi

python - 更改级别记录到 IPython/Jupyter notebook

转载 作者:太空狗 更新时间:2023-10-29 21:20:46 26 4
gpt4 key购买 nike

我有一个包依赖于几个不同的模块,每个模块都设置了自己的记录器。这让我可以记录每条日志消息的来源,这很有用。

但是,在 IPython/Jupyter 笔记本中使用此代码时,我无法控制打印到屏幕上的内容。具体来说,我收到了很多我不想看到的 DEBUG 级消息。

如何更改打印到笔记本的日志级别?

更多信息:

我尝试在笔记本中设置根记录器,如下所示:

# In notebook
import logging
logging.basicConfig()
logger = logging.getLogger()
logger.setLevel(logging.INFO)
# Import the module
import mymodule

然后在我的模块顶部,我有

# In mymodule.py
import logging
logger = logging.getLogger('mypackage.' + __name__)
logger.setLevel(logging.DEBUG)
logger.propagate = True
# Log some messages
logger.debug('debug')
logger.info('info')

当在笔记本中调用模块代码时,我希望日志向上传播,然后顶级记录器只打印信息日志语句。但是调试和信息日志语句都会显示。

相关链接:

最佳答案

对于当前的 ipython/Jupyter 版本(例如 6.2.1),logging.getLogger().handlers 列表在启动和 logging.getLogger().setLevel(logging. DEBUG) 无效,即不打印任何信息/调试消息。

在 ipython 内部,您还必须更改 ipython 配置设置(并可能解决 ipython 错误)。例如,要降低日志记录阈值以调试消息:

# workaround via specifying an invalid value first
%config Application.log_level='WORKAROUND'
# => fails, necessary on Fedora 27, ipython3 6.2.1
%config Application.log_level='DEBUG'
import logging
logging.getLogger().setLevel(logging.DEBUG)
log = logging.getLogger()
log.debug('Test debug')

如果只是获取一个模块的调试消息(参见该模块中的 __name__ 值),您可以将上面的 setLevel() 调用替换为更具体的调用:

logging.getLogger('some.module').setLevel(logging.DEBUG)

关于python - 更改级别记录到 IPython/Jupyter notebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35326814/

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