gpt4 book ai didi

python - Python 模块覆盖的日志记录设置

转载 作者:行者123 更新时间:2023-12-05 06:41:01 25 4
gpt4 key购买 nike

我对如何最好地在我的 Python 应用程序中设置日志记录感到困惑。

我正在使用 IBPy 模块,其中包含 own logging here :

import logging
import os

format = '%(asctime)s %(levelname)-9.9s %(message)s'

datefmt = '%d-%b-%y %H:%M:%S'

##
# Default log level. Set IBPY_LOGLEVEL environment variable to
# change this default.
level = int(os.environ.get('IBPY_LOGLEVEL', logging.DEBUG))


def logger(name='ibpy', level=level, format=format,
datefmt=datefmt):
logging.basicConfig(level=level, format=format, datefmt=datefmt)
return logging.getLogger(name)

我的应用程序包含一堆导入到 Jupyter 笔记本中的文件。最终执行在笔记本内部进行。

目前,其他模块正在“DEBUG”级别启动,我的笔记本上充满了警告。

在模块级别配置日志记录的正确方法是什么?

最佳答案

IBMy 对 basicconfig 的调用已将“root”记录器配置为捕获调试级别及更高级别的事件并将它们发送到 stderr。这有效地导致来自每个记录器的每个事件都被处理。有几种方法可以让这种情况重新得到控制。

在您自己的模块顶部混合搭配以下内容。

设置ibpy级别

ibpy 是否污染了您的控制台?仅将 ibpy 记录器设置为“警告”级别。对于所有其他记录器,您仍然会收到调试或更大的事件。

logging.getLogger('ibpy').setLevel('WARNING')

设置根级别

限制根记录器只处理信息及以上信息。这实际上意味着您将看到来自所有记录器的信息和上述事件。

logging.getLogger().setLevel('INFO')

删除根处理程序

从 root 中删除处理程序,没有任何东西进入 stderr。

logging.getLogger().handlers.clear()

添加自己的记录器

如果您从 root 中删除了一个处理程序,则可能需要配置一个新的处理程序。如果您想避免来自任何其他记录器的日志,请考虑将其添加到此记录器。

logger = logging.getLogger('mine')

关于python - Python 模块覆盖的日志记录设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41483177/

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