Я хочу посчитать количество раз, когда 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/бен/питон импорта каротаж QUERY_COUNT = 0 original_function = logging.error._obj класс MyLogger: Защиту _obj (самость, мет, * арг): сопп = self.getConnection() вал = мет (Conn, * арг) self.releaseConnection (Conn) возвращение Вэл защиту обертка (я, мет, * арг): глобальная QUERY_COUNT QUERY_COUNT + = 1 возвращение original_function (самость, мет , * args) logging.error._obj = wrapper – LoveforPython
@PrashantRathi, пожалуйста, уточните мой обновленный ответ для примера кода –
- 1. Пользовательский метод каротажа Python
- 2. Переопределить метод класса модуля Django
- 3. Переопределить метод модуля, где из ... импорт используется
- 4. Насколько плохо переопределить метод из стороннего модуля?
- 5. Как изменить метод модуля joomla?
- 6. Как переопределить метод из модели модуля в yii?
- 7. (ruby on rails) как переопределить метод модуля, размещенный в lib/
- 8. Как переопределить метод?
- 9. Как переопределить метод расширения?
- 10. Как переопределить метод OnDraw?
- 11. метод равен - как переопределить
- 12. Как переопределить метод
- 13. как переопределить метод compareTo
- 14. Как переопределить метод jquery?
- 15. Как переопределить общий метод
- 16. Переопределить метод
- 17. Rails: переопределить, а также использовать существующий метод модуля gem
- 18. Возможно ли переопределить встроенный метод Ruby вне класса или модуля?
- 19. Переопределить метод «+»
- 20. Переопределить метод
- 21. переопределить метод
- 22. Как переопределить gett-attr_accessor из модуля?
- 23. Override метод модуля из другого модуля
- 24. Предотвращение каротажа
- 25. Как добавить/переопределить метод для помощника
- 26. Как переопределить Реализация функционального модуля в
- 27. yii2 как переопределить конфигурацию для каждого модуля
- 28. Magento 2 как переопределить шаблон модуля?
- 29. Как переопределить определения в классах переопределения модуля?
- 30. Как переопределить метод объекта-члена?
Можете ли вы поделиться какой-либо код, который вы пробовали? Вы можете начать с добавления собственного 'MyLogger', который обертывает реализацию регистратора python и добавляет счетчики. – yelsayed