Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Logging f-string #12

Open
Olegt0rr opened this issue Nov 19, 2021 · 7 comments
Open

Logging f-string #12

Olegt0rr opened this issue Nov 19, 2021 · 7 comments
Labels
good first issue Good for newcomers wontfix This will not be worked on

Comments

@Olegt0rr
Copy link

В примерах с logging не надо использовать f-строки, они забирают ресурсы на интерполяцию строк, которые могут не пригодиться при определённых уровнях логирования

@pomponchik pomponchik added good first issue Good for newcomers wontfix This will not be worked on labels Nov 22, 2021
@pomponchik
Copy link
Owner

В стандарном модуле logging на "бекенде" логгера происходит именно вставка переданных значений в строку.

В polog обработчик — это функция, которая может делать по сути что угодно, совсем не обязательно преобразуя лог в человекочитаемую строку. Вместо этого лог может быть преобразован в формат json или сериализован как-то иначе. Поэтому я не стал добавлять поведение с форматированием лога как строки по умолчанию. Я считаю полезным семантически разделить сообщение лога и дополнительные данные. В текущей версии polog в файловом обработчике дополнительные данные не вставляются автоматически в строку с сообщением, но добавляются как бы "сбоку" через символ "|".

Возможно, в будущей версии я добавлю похожее на logging поведение как дополнительную опцию.

@Olegt0rr
Copy link
Author

Olegt0rr commented Nov 23, 2021

Речь не о polog.
В примерах, где рассматривается обычное использование logging, применяются f-строки - это плохой пример.

logging не производит интерполяцию строк для DEBUG записей если общий уровень - INFO, а ф-строка производит интерполяцию ДО передачи в логгинг (получается просадка по производительности)

# BAD EXAMPLE
logging.info(f"begin of operations with {arg_1} and {arg_2}")
# GOOD EXAMPLE
logging.info("begin of operations with %s and %s", arg_1, arg_2)

@pomponchik
Copy link
Owner

pomponchik commented Oct 16, 2022

А вы можете предоставить пример теста, который бы показал, что предложенный вами способ работает быстрее?

@Olegt0rr
Copy link
Author

timeit в помощь :)

@Olegt0rr
Copy link
Author

@kehrazy
Copy link

kehrazy commented Jul 25, 2023

ну и объяснение: https://blog.pilosus.org/posts/2020/01/24/python-f-strings-in-logging/

Объяснение просто крутейшее. "ТУТ МЕДЛЕННО!", не указав где именно. В пайтоне медленно всё, не вижу смысла изобретать велосипед.

@Olegt0rr
Copy link
Author

Я предложил как сделать эффективнее.
Хочется работать медленно – дело авторское.

Есть cookbook от python, есть PEP282, которые показывает как правильно работать с logging.
Нравится писать велосипеды – пожалуйста :)

@pomponchik pomponchik reopened this Oct 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

3 participants