Как библиотека журналирования Python эффективно получает lineno и funcName?Python

Программы на Python
Anonymous
Как библиотека журналирования Python эффективно получает lineno и funcName?

Сообщение Anonymous »

В своем сервисе Python я использую собственную библиотеку журналирования, несовместимую с модулем журналирования Python. Используя эту библиотеку, я хочу добавить в журналы дополнительную информацию, например lineno и funcName. Я использовал библиотеку проверки, чтобы получить эту информацию, как показано ниже:

Код: Выделить всё

frame = inspect.currentframe().f_back
frame_info = inspect.getframeinfo(frame)
frame_info.lineno
Однако, согласно обсуждениям в Python, Inspect.stack работает медленно, эти методы использования библиотеки проверки являются несколько дорогостоящими, поскольку они обращаются к файловой системе. Из-за этого мы заметили снижение производительности нашего сервиса (хотя и не такое сильное, как когда мы ранее использовали Inspect.stack()[0]).
Я заметил Собственный модуль ведения журнала Python способен эффективно получать методы funcName и lineno. Они предоставляются через атрибуты LogRecord: https://python.readthedocs.io/en/latest ... attributes.
Мой вопрос: как происходит ведение журнала Python? модуль работает для достижения эффективного сбора этой информации? Я пытался покопаться в исходном коде, но с трудом нашел нужное место.

Подробнее здесь: https://stackoverflow.com/questions/781 ... fficiently

Вернуться в «Python»