gpt4 book ai didi

Python Logging - 如何检查 Logger 是否为空

转载 作者:行者123 更新时间:2023-12-04 19:59:42 25 4
gpt4 key购买 nike

我刚刚在我的应用程序中实现了日志记录,我想知道是否有一种方法可以检查记录器是否为空。

我的想法是在我的脚本中设置两个处理程序:

  • 一台用于带级别的控制台 WARNING
  • 一个文件级别 DEBUG

  • 在脚本的末尾,我需要检查是否 CONSOLE记录器不为空。这意味着在运行期间,一些带有 level >= WARNING 的消息已记录,在这种情况下,我想通过 smtp 发送调试级别的日志文件到我的邮箱。

    是否可以在 python 内进行此项检查?脚本本身,没有 shell 重定向到文件?

    最佳答案

    有一种通用方法可以计算使用装饰器调用函数的次数,您可以查看 here

    如果您将此装饰器包装在您感兴趣的类调用周围,您可以找出每个成员函数被调用的次数,如下所示:

    def counted(fn):
    def wrapper(*args, **kwargs):
    wrapper.called += 1
    return fn(*args, **kwargs)
    wrapper.called = 0
    wrapper.__name__ = fn.__name__
    return wrapper

    class MyLogger(logging.Logger, object):

    @counted
    def info(self, *args, **kwargs):
    super(MyLogger, self).info(*args, **kwargs)

    @counted
    def warning(self, *args, **kwargs):
    super(MyLogger, self).warning(*args, **kwargs)

    接下来只需像任何其他记录器一样设置您的记录器并像往常一样使用它:
    log = my_logger.MyLogger('test_logger')
    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)
    log.addHandler(ch)
    log.setLevel(logging.DEBUG)

    >>> log.info('no big deal')
    no big deal
    >>> log.info('harmless message')
    harmless message
    >>> log.warning('oh no')
    oh no

    >>> log.info.called
    2
    >>> log.warning.called
    1

    您需要装饰您想要计算的所有类,因此异常、调试等。

    关于Python Logging - 如何检查 Logger 是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30059477/

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