我想要計算已經命中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