В своем сервисе 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