Enr*_*rdo 5 python logging is-empty
我只是在应用程序中实现了登录功能,所以我想知道是否有一种方法可以检查记录器是否为空。
我要记住的是在脚本中设置两个处理程序:
WARNINGDEBUG在脚本末尾,我需要检查CONSOLElogger是否为空。这意味着在运行期间,level >= WARNING记录了一些消息,在这种情况下,我想将调试级别的日志文件发送smtp到我的邮箱。
是否可以在python脚本本身内部进行此检查,而无需将Shell重定向到文件?
有一种通用方法可以使用装饰器来计算函数被调用的次数,您可以在此处查看
如果您将此装饰器包装在您感兴趣的类调用周围,您可以找出每个成员函数被调用的次数,如下所示:
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)
Run Code Online (Sandbox Code Playgroud)
接下来,只需像其他记录器一样设置您的记录器并像平常一样使用它:
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
Run Code Online (Sandbox Code Playgroud)
您需要装饰所有您想要计数的类,例如异常、调试等。
| 归档时间: |
|
| 查看次数: |
2850 次 |
| 最近记录: |