也许它只是不存在,因为我在pydoc中找不到它.但是使用python的日志包,有没有办法查询Logger以找出调用特定函数的次数?例如,报告了多少错误/警告?
Mar*_*ddy 13
日志记录模块似乎不支持此功能.从长远来看,您可能最好创建一个新模块,并通过对现有日志记录模块中的项进行子类化来添加此功能以添加所需的功能,但您也可以使用装饰器轻松实现此行为:
class CallCounted:
"""Decorator to determine number of calls for a method"""
def __init__(self,method):
self.method=method
self.counter=0
def __call__(self,*args,**kwargs):
self.counter+=1
return self.method(*args,**kwargs)
import logging
logging.error = CallCounted(logging.error)
logging.error('one')
logging.error('two')
print(logging.error.counter)
Run Code Online (Sandbox Code Playgroud)
输出:
ERROR:root:one
ERROR:root:two
2
Run Code Online (Sandbox Code Playgroud)
Rol*_*olf 10
您还可以向记录器添加新的处理程序,以计算所有呼叫:
class MsgCounterHandler(logging.Handler):
level2count = None
def __init__(self, *args, **kwargs):
super(MsgCounterHandler, self).__init__(*args, **kwargs)
self.level2count = {}
def emit(self, record):
l = record.levelname
if (l not in self.level2count):
self.level2count[l] = 0
self.level2count[l] += 1
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用dict输出呼叫数.
| 归档时间: |
|
| 查看次数: |
3169 次 |
| 最近记录: |