Это просто кладезь знаний! Спасибо огромное тебе, Сурен!
@SurenKhorenyanАй бұрын
Пожалуйста! Очень приятно 🥰
@podjigalgoroda65234 ай бұрын
Только начал читать статью на Хабре за логи, так тут видос от Сурена. Кайф!
@SurenKhorenyan4 ай бұрын
@@podjigalgoroda6523 крутяк!
@Alex-zl7wg2 ай бұрын
Как всегда изложено чётко и грамотно.
@SurenKhorenyan2 ай бұрын
Спасибо ☺️
@_radja17 күн бұрын
Однако необычно видеть видео по logging и не слышать ничего про конфигурацию через словарь или файл, ничего про хендлеры и взаимоотношения внутри, даже ничего про ротации, а ведь кажется, что именно это все так раздражает людей в библиотеке, поэтому и пользуют разные loguru. Я так понимаю, причина в подходе, что из потока необходимое будет хватать уже другая программа, но словно стоило немного про это поговорить. Тем не менее, спасибо, было интересно и ты очень круто доносишь информацию.
@SurenKhorenyan17 күн бұрын
Пожалуйста! В этом видео самая основа. Прям основы основ. Говорить про более сложные вещи, которые вы перечисляете, просто рано и неуместно. И так ролик большой получился. Логуру фуфло, не нужно его использовать. Кроме симпатичного вывода и более широкого трейсбека ничего интересного там нет. Пожалуйста!
@ivanalexandrovsky19094 ай бұрын
Привет! Спасибо за видос 🔥
@SurenKhorenyan4 ай бұрын
@@ivanalexandrovsky1909 привет! Пожалуйста ☺️
@den-rad4 ай бұрын
Спасибо за видео!
@SurenKhorenyan3 ай бұрын
Пожалуйста!
@dmitriynekrasov30983 ай бұрын
Спасибо, очень интересно. Было бы еще интересно услышать сравнение со страктлог и логуру
@SurenKhorenyan3 ай бұрын
Пожалуйста! Не использую ни то ни другое, так как и без них всё ок. Максимум это JSON formatter для вывода в JSON
@raymond41934 ай бұрын
Привет, спасибо за качественный материал :3 Будет ли продолжение? Хотелось бы узнать как можно логировать или перехватывать логи из других фреймворков, библиотек и, например, отсылать их в брокер или куда-то еще, либо инструменты которые позволяют это делать. Так же, было бы круто узнать о других инструментах для логгирования, по типу structlog
@SurenKhorenyan4 ай бұрын
Привет, пожалуйста! Продолжение может быть и будет, но не в ближайшее время. Перехватывать логи чтобы что? Они же обычно точно также пишутся. Или у вас какая-то другая задача? Продвинуть тему видео вперед можно через бусти 🙂
@itsrealshafardenis4 ай бұрын
Подскажите, как называется эта тема для кода. Не могу понять по расцветке, но очень нравится..
@SurenKhorenyan4 ай бұрын
@@itsrealshafardenis это One Dark
@itsrealshafardenis4 ай бұрын
@@SurenKhorenyan большое спасибо
@SurenKhorenyan4 ай бұрын
@@itsrealshafardenis пожалуйста! 🥰
@popcorn_8334 ай бұрын
Привет! Спасибо за материал! Нужно было добавить как записывать их в файлы, по времени, размеру и т.д.
@SurenKhorenyan4 ай бұрын
@@popcorn_833 привет! Пожалуйста! Ротацию логов нужно делать не на уровне приложения, логи необходимо писать в stdout / stderr А дальше супервизор собирает и ротирует логи, будь то Docker, systemd, или что-то ещё. Это не ответственность приложения, хоть и действительно в питоне можно сделать ротацию логов. Но мы этим не занимаемся
@bocik28544 ай бұрын
@@SurenKhorenyan а не расскажешь про ELK, ротацию логов и вот это всё? Думаю многим будет полезно
@zion4d4 ай бұрын
@@SurenKhorenyan уточнение про ротацию логов супервизором кажется для меня даже более ценным чем всё видео). как же я намучался в свое время с ротированием внутри приложения и не догадался просто выводить в stdout и читать journalctl
@SurenKhorenyan4 ай бұрын
@@zion4d ого. Ну, видимо, надо будет про это тоже рассказать 😅
@SurenKhorenyan4 ай бұрын
@@bocik2854 когда-нибудь расскажу, но, наверное, не скоро. Ускорить можно через бусти 🙂
@MrSunTrope3 ай бұрын
Спасибо, логирование это нелюбимая тема, но знать и использовать все равно нужно, можно видео по работе с датами? И по работе с файлами pathlib к пррмеру.
@SurenKhorenyan3 ай бұрын
Пожалуйста! А с датами что? Вообще, заказ темы проходит через бусти
@ДмитрийМатов-щ2й4 ай бұрын
Как понять философию вывода error и warning, это надо заранее знать что это ошибка получается? Но ее надо исправлять, а не выводить info и debug понятно вроде, info временно выключаем, debug используем, зачем остальные не могу понять
@SurenKhorenyan3 ай бұрын
Зависит от ситуации. Эти уровни тоже применимы и довольно часто. Иногда нельзя точно предсказать ситуацию более узко, чем "что-то пошло не так, вот детали:"
@koltdota3 ай бұрын
подскажите, когда я пытаюсь повторить пример с %s и передавать параметры в аргументы, то у меня записывает в лог %s, а не полученное значение из аргументов
@SurenKhorenyan3 ай бұрын
А аргументы вы точно передали? Показывайте код. В чате в телеграм быстрее подскажем
@koltdota3 ай бұрын
@@SurenKhorenyan кинул скрин в чат
@bocik28544 ай бұрын
Спасибо за видос! Как называется твоя тема в pycharm?
@SurenKhorenyan4 ай бұрын
@@bocik2854 пожалуйста! Это One Dark
@bocik28544 ай бұрын
@@SurenKhorenyan спс🙂
@SurenKhorenyan4 ай бұрын
@@bocik2854 🤝
@никитакорж-ю7э4 ай бұрын
Было бы круто увидеть, как применяется логирование в fastapi проекте. Не совсем понятно, что и как нужно правильно логировать (каждую ли апи или только те, которые важны).
@SurenKhorenyan4 ай бұрын
@@никитакорж-ю7э логирование там применяется точно также. Логировать нужно только то, что вам важно увидеть при чтении логов
@forceloop17893 ай бұрын
в реальных проектах реализация логов такая же? я думал, что логи реализуются через декораторы (wrapperы) и сохраняются в специальные файлы, а не выводятся в консоль
@SurenKhorenyan3 ай бұрын
@@forceloop1789 логи надо писать в stdout (как показано, в консоль), чтобы не тормозить программу работой с диском. А уже оттуда будет другая программа читать всё написанное и сохранять куда надо. Декораторы тут вообще не играют роли
@forceloop17893 ай бұрын
@@SurenKhorenyan понял, спасибо за быстрый ответ, ты профи
@SurenKhorenyan3 ай бұрын
@@forceloop1789 пожалуйста 🥰
@forceloop17892 ай бұрын
@@SurenKhorenyan было бы ешё интересно и полезно услышать от тебя, как реализуются метрики в fastapi. Через Grafana или Prometheus, или как вообще ?
@SurenKhorenyan2 ай бұрын
Всё зависит от того, кто принимает решения. Можно прометеус, можно складывать в кликхаус, а отображать в графане
@vasopython15474 ай бұрын
спасибо ❤
@SurenKhorenyan4 ай бұрын
@@vasopython1547 пожалуйста 🥰
@efibutov4 ай бұрын
Не успел досмотреть до конца, поэтому, возможно, вопрос лишний: насколько логгирование замедляет работу приложения, и как устранить подобную проблему?
@SurenKhorenyan4 ай бұрын
@@efibutov ни насколько. Вообще, преждевременная оптимизация это вредное занятие, не тратьте на него время
@efibutov4 ай бұрын
@@SurenKhorenyan я о том, что если логгер типа кибаны, то это медленный IO, и, возможно, это будет тормозить ...
@SurenKhorenyan4 ай бұрын
@@efibutov если у вас есть реальные примеры, то давайте обсуждать, можете показать в чате в телеграм. Если делать логи как я показал в ролике, замедления не будет точно. Все логи надо выводить в stdout / stderr
@efibutov4 ай бұрын
@@SurenKhorenyan Согласен, если в СТД, проблем быть не должно (конечно,м предполагаем, что речь идёт не о CPU-bound аппликации). Однако если есть логгер, который пробрасывает логи, скажем, в эластик, то послать данные по сетке может занимать время, если это синхронные запросы
@efibutov4 ай бұрын
@@SurenKhorenyan Просто я подумал, что если на каждый чих будет что-то слаться по сетке в логгер, то аппликация может замедлиться
@dmitry-lz1ny2 ай бұрын
Форматирование из C. В целом думаю это многие и так знают.
@SurenKhorenyan2 ай бұрын
@@dmitry-lz1ny немногие знают, из чего сделан питон 🙂
@dmitry-lz1ny2 ай бұрын
@@SurenKhorenyan Ну сейчас реально могут на собесе даже на джуна спросить немного про C. Конечно если не знаешь тебя врядтли сбросят, но плюсик будет не плохой. Да и в целом полезные знания, для понимания программирования в целом.
@SurenKhorenyan2 ай бұрын
@@dmitry-lz1ny могут.. да, вы правы, знания точно будут не лишними
@Kampogolik4 ай бұрын
Уровень info для отладки? Что то какой то неправильный мед.
@SurenKhorenyan4 ай бұрын
@@Kampogolik всё так. На debug уровне слишком много всего сыпет в логи. На проде всё равно должно быть от WARNING и выше
@Kampogolik4 ай бұрын
@@SurenKhorenyan info - это не дебаг уровень. Допустим на проде нам нужно знать, когда залогинился или разлогинился пользователь (думаю, что с этим Вы согласны). Так это ну никак не Варнинг и не Дебаг. Вполне себе обычный Инфо.
@SurenKhorenyan3 ай бұрын
Если нас волнует событие входа / выхода пользователя, мы это пишем в базу данных, можно в тот же кликхаус. Никак не в логи. Логи нужны для отладки, когда мы уже поняли, что нам надо разобраться в последовательности событий
@Kampogolik3 ай бұрын
@@SurenKhorenyan логи нужны и для разбора ситуаций на продакшене. Или у Вас идеальный код и не может возникнуть ошибки в проде? Конечно, ситуации бывают разные, но когда в проде сразу по логу понятно что произошло - это жирный плюс. Поэтому крайне не согласен с Вами на счёт типа Info
@SurenKhorenyan3 ай бұрын
@@Kampogolik на продакшн логи от уровня Warning и выше. Инфо вы всё равно не увидите.
@sergeipopov3 ай бұрын
Как будто бы не работает оптимизация % форматирования... Ниже выводим только уровень INFO, но общее время всё-равно 4 секунды (вместо ожидаемых 3 секунд). Почему - не понятно. start_time = time.time() logging.debug("Result: %d", complex_function()) logging.info("Result: %d", complex_function()) logging.debug("Result: {}".format(complex_function())) logging.debug(f"Result: {complex_function()}") end_time = time.time() total_time = end_time - start_time print(f"Total execution time: {total_time:.2f} seconds") ======== # python src/time_tester.py 2024-08-30 15:15:28,872 - Result: 42 Total execution time: 4.01 seconds
@SurenKhorenyan3 ай бұрын
@@sergeipopov привет Я в ролике показывал проверку isEnabledFor. Для подобных ситуаций нужно делать под флагом обязательно, если какую-то долгую функцию только для лога дёргаете