我想要计算已经命中logger.info
和logger.error
的次数。 我打算覆盖日志的默认方法错误,任何人都可以告诉我该怎么做? 需要帮助来覆盖错误方法,以便每次代码命中时计数值和递增计数器。如何覆盖日志记录模块的方法
回答
您可以首先通过从logging.Logger派生出实现您自己的记录器类,在其中覆盖您的目标方法。然后通过使用logging.setLoggerClass将记录器类传递到日志记录系统。使用此设置,logging.getLogger实例化的记录器对象将成为您的类。
import logging
import threading
class MyLogger(logging.Logger):
def __init__(self, name, level = logging.NOTSET):
self._count = 0
self._countLock = threading.Lock()
return super(MyLogger, self).__init__(name, level)
@property
def warnCount(self):
return self._count
def warning(self, msg, *args, **kwargs):
self._countLock.acquire()
self._count += 1
self._countLock.release()
return super(MyLogger, self).warning(msg, *args, **kwargs)
logging.setLoggerClass(MyLogger)
logging.basicConfig()
'''testing below'''
logger = logging.getLogger('loggerX')
assert isinstance(logger, MyLogger)
logger.warning('1st warning')
logger.warning('2nd warning')
print logger.warnCount
非常感谢您的想法。我尝试过,但没有做到这一点。我正在学习python和新的。 你能否给我这个雷士的代码。这将是非常有用的。 – LoveforPython
这段代码有意义吗? ! #在/ usr/bin中/ Python的 进口记录 QUERY_COUNT = 0 original_function = logging.error._obj 类MyLogger: 高清_obj(个体经营,甲基,*参数): 康恩= self.getConnection () VAL =甲基(康涅狄格州,*参数) self.releaseConnection(康涅狄格州) 返回VAL DEF包装物(自,甲基,*参数): 全球QUERY_COUNT QUERY_COUNT + = 1个 返回original_function(个体,甲基,* args) logging.error._obj =包装 – LoveforPython
@PrashantRathi,请检查我的更新回答示例代码 –
- 1. 如何覆盖joomla模块的方法?
- 2. 不追加,但覆盖日志记录
- 3. Python日志记录 - dictConfig - 子模块的日志记录目标
- 4. 如何覆盖日志模板?
- 5. 如何覆盖python cli模块中的默认“日志文件”?
- 6. 在包模块中设置日志记录的有效方法
- 7. 如何扩展模块,覆盖方法,并仍然调用覆盖的方法?
- 8. 如何覆盖Magento产品视图日志记录
- 9. 如何不覆盖文件,C++日志记录
- 10. 从库模块的Python日志记录
- 11. Nlog日志记录方法
- 12. 如何记录覆盖另一种方法的方法?
- 13. 覆盖宝石模块的方法
- 14. 扩展python日志记录模块
- 15. Python日志记录 - 排除子模块
- 16. Django的日志记录与dictConfig找不到“日志”模块
- 17. 如何从yii中的模块模型中覆盖方法?
- 18. 如何使日志模块功能使用不同的日志记录器?
- 19. 覆盖模块方法并引用它
- 20. 我应该使用日志记录模块还是日志记录类?
- 21. 如何获取当前日志级别的Python记录模块
- 22. python如何禁用多个导入的模块日志记录
- 23. 由于日志记录模块的日志旋转导致日志丢失
- 24. 如何防止模块级日志记录功能破坏我的记录器?
- 25. 如何获取Python日志记录模块当前正在记录的文件?
- 26. 如何防止用python日志记录模块截断日志文件?
- 27. 跨类的PHP日志记录方法
- 28. 特定于方法的日志记录
- 29. 覆盖格式的日志
- 30. Liferay的日志覆盖
你能分享你试过的任何代码:
根据要求与示例代码更新?你可以从添加自己的'MyLogger'开始,这个'MyLogger'包装python的logger实现并添加计数器。 – yelsayed