Возможно, этого просто не существует, поскольку я не могу найти его в pydoc. Но используя пакет регистрации python, есть ли способ запросить Logger, чтобы узнать, сколько раз вызывалась определенная функция? Например, сколько сообщений об ошибках/предупреждениях было сообщено?Сколько раз вызывал logging.error()?
ответ
Модуль регистрации не поддерживает это. В конечном итоге вам, вероятно, будет лучше создавать новый модуль и добавлять эту функцию путем подклассификации элементов в существующем модуле ведения журнала, чтобы добавить нужные вам функции, но вы также можете легко добиться этого поведения с помощью декоратора :
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
Там warnings модуль, который - в некоторой степени - делает некоторые из этого.
Возможно, вы захотите добавить эту функцию подсчета к настраиваемому Handler. Проблема в том, что существует миллион обработчиков, и вы можете добавить его в несколько видов.
Возможно, вы захотите добавить его в Filter, так как это не зависит от используемых Обработчиков.
Вы также можете добавить новый обработчик к регистратору, который подсчитывает все вызовы:
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
Вы можете использовать в Словаре корму для вывода количества вызовов.
- 1. Mouseenter вызывал несколько раз
- 2. iOS updateSearchResultsForSearchController только вызывал один раз
- 3. Сколько раз нажимается кнопка?
- 4. Сколько раз вызываются конструкторы?
- 5. Компиляция компилятора - сколько раз?
- 6. Сколько раз вызывается onDraw()?
- 7. Сколько раз срабатывает onunload?
- 8. Сколько раз функция оценивалась?
- 9. сколько раз SetTimeout пожары
- 10. Сколько раз вызывается конструктор?
- 11. Сколько раз загружается JQuery
- 12. Сколько раз нужно curl_multi_exec?
- 13. Сколько раз редуктор называется
- 14. Сколько раз цикл будет выполняться?
- 15. Проверьте, сколько раз возраст повторяется
- 16. Сколько раз файл был загружен
- 17. сколько раз будет выполняться функция?
- 18. Сколько раз эта функция выполняется
- 19. Подсчитайте, сколько раз переменная называется
- 20. Сколько раз SpringJUnit4ClassRunner инициализирует контекст?
- 21. Сколько раз программа запускалась? C#
- 22. Сколько раз использовать set.seed (123)
- 23. Сколько раз функция будет вызываться?
- 24. Сколько раз выполнялся вложенный запрос
- 25. Сколько раз повторяйте каждый символ
- 26. jQuery нажмите кнопку сколько раз?
- 27. Вывод, сколько раз вы вводите
- 28. Сколько раз записывается пользовательская переменная?
- 29. Сколько раз нужно кэшировать объявление?
- 30. Сколько раз создается создание DBRecordReader?
Это было идеально для меня. Ответ декоратора затенял истинное имя функции и номер строки, из которой был вызван регистратор. С пользовательским обработчиком он работал отлично. –