确定Python中的根记录器是否设置为DEBUG级别?

发布于 2024-08-16 08:19:08 字数 230 浏览 9 评论 0原文

如果我使用如下命令行参数将日志记录模块设置为“调试”:

if (opt["log"] == "debug"):
  logging.basicConfig(level=logging.DEBUG)

以后如何判断记录器是否设置为“调试”?我正在写一个装饰器 如果将 True 标志传递给函数,则会对函数计时,如果没有给出标志,则默认 当根记录器设置为 DEBUG 时打印计时信息。

If I set the logging module to DEBUG with a command line parameter like this:

if (opt["log"] == "debug"):
  logging.basicConfig(level=logging.DEBUG)

How can I later tell if the logger was set to DEBUG? I'm writing a decorator that
will time a function if True flag is passed to it, and if no flag is given, it defaults
to printing timing information when the root logger is set to DEBUG.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

维持三分热 2024-08-23 08:19:08

实际上,有一个更好的方法:使用代码 logging.getLogger().isEnabledFor(logging.DEBUG)。我在尝试了解如何处理 getEffectiveLevel() 的结果时发现了它。

下面是日志记录模块本身使用的代码。

def getEffectiveLevel(self):
    """
    Get the effective level for this logger.

    Loop through this logger and its parents in the blogger hierarchy,
    looking for a non-zero logging level. Return the first one found. 
    """
    logger = self
    while logger:
        if logger.level:
            return logger.level
        logger = logger.parent
    return NOTSET

def isEnabledFor(self, level):
    """
    Is this logger enabled for level ‘level’?
    """
    if self.manager.disable >= level:
        return 0
    return level >= self.getEffectiveLevel()

Actually, there's one better: use the code logging.getLogger().isEnabledFor(logging.DEBUG). I found it while trying to understand what to do with the result of getEffectiveLevel().

Below is the code that the logging module itself uses.

def getEffectiveLevel(self):
    """
    Get the effective level for this logger.

    Loop through this logger and its parents in the blogger hierarchy,
    looking for a non-zero logging level. Return the first one found. 
    """
    logger = self
    while logger:
        if logger.level:
            return logger.level
        logger = logger.parent
    return NOTSET

def isEnabledFor(self, level):
    """
    Is this logger enabled for level ‘level’?
    """
    if self.manager.disable >= level:
        return 0
    return level >= self.getEffectiveLevel()
梦萦几度 2024-08-23 08:19:08
logging.getLogger().getEffectiveLevel()

不带参数的 logging.getLogger() 获取根级别记录器。

http://docs.python.org/library/logging.html#logging .Logger.getEffectiveLevel

logging.getLogger().getEffectiveLevel()

logging.getLogger() without arguments gets the root level logger.

http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel

一影成城 2024-08-23 08:19:08

只是

logging.getLogger().level == logging.DEBUG

Just

logging.getLogger().level == logging.DEBUG
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文