也許它只是不存在,因爲我無法在pydoc中找到它。但是使用python的日誌包,是否有一種方法可以查詢Logger來查找某個函數被調用了多少次?例如,報告了多少錯誤/警告?logging.error()調用了多少次?
9
A
回答
12
記錄模塊似乎不支持這一點。從長遠來看,您可能會更好地創建一個新模塊,並通過在現有日誌記錄模塊中對子項進行子分類來添加此功能,以添加所需的功能,但您也可以使用裝飾器輕鬆實現此功能:
class callcounted(object):
"""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
輸出:
ERROR:root:one
ERROR:root:two
2
0
7
您還可以添加一個新的處理程序的記錄器,其對所有呼叫:
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
然後,您可以使用字典後erwards輸出呼叫數量。
相關問題
- 1. 調用了多少次onDraw()?
- 2. 函數調用了多少次?
- 3. getListCellRendererComponent被調用了多少次?
- 4. 值出現了多少次
- 5. 調用'release'太多次了?
- 6. ajax調用太多了多少?
- 7. SPARQL中應用了多少次屬性?
- 8. 下面的函數被調用了多少次?
- 9. 二分查找做了多少次遞歸函數調用?
- 10. 複製ctor在下面被調用了多少次?
- 11. 構造函數被調用多少次?
- 12. 該函數將被調用多少次?
- 13. MPI_Reduce調用reduce操作多少次?
- 14. 每秒多少次函數調用?
- 15. curl_multi_exec必須被調用多少次?
- 16. C#:調用foreach master值多少次?
- 17. 減少多次調用數據庫
- 18. 跟蹤調用了多少個信號?
- 19. Jenkins調用了多少個JVM?
- 20. 檢查包了多少次從CRAN
- 21. 瞭解多少次按鈕被點擊
- 22. PHP - 頁面被瀏覽了多少次
- 23. 我的循環迭代了多少次
- 24. 試圖處理logging.error
- 25. PHP - 多少次
- 26. 多少次調用函數(偶/奇次數)
- 27. 使用了多少位?
- 28. 多次調用
- 29. 服務調用次數太多:翻譯。配額是多少?
- 30. 如何知道用戶對SoundCloud上傳了多少次上傳?
這對我來說很理想。裝飾者答案隱藏了從中調用記錄器的真實函數名稱和行號。使用自定義處理程序,它完美運行。 – 2016-04-07 01:59:29