Лёгкое логирование в Python с Loguru. Замена встроенной библиотеке logging

Поделиться
HTML-код
  • Опубликовано: 26 сен 2024
  • Мой курс «Хардкорная веб-разработка» - course.to.digital
    Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.dig...
    Telegram: t0digital.t.me
    Сказать спасибо за это видео можно здесь - boosty.to/digi...
    Если использование встроенной в Python библиотеки logging кажется вам сложным и избыточным, то скорее всего библиотека loguru - то, что вам нужно. Поговорим о простом логировании в Python с loguru, установим и сконфигурируем библиотеку, а также покажем несколько быстрых лайфхаков с ней.
    /****************** about ******************/
    Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
    - Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
    - Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
    Если у вас есть проект на разработку, пишите нам на hi@digitalize.team.
    С другими предложениями, а также если вам нужна одна или несколько индивидуальных консультаций/уроков по разработке (3000 руб/час), пишите мне на alexey@salesbeat.pro.
    Telegram канал - t.me/t0digital
    ВК - digital...
    RuTube - rutube.ru/chan...
    Дзен - dzen.ru/id/623...

Комментарии • 250

  • @Sadownick
    @Sadownick 4 года назад +114

    Наверное, выскажу общее мнение, что видос как всегда крайне понятный, а самое главное полезный, круто, огонь 👍🏻👍🏻

    • @t0digital
      @t0digital  4 года назад +5

      Спасибооо 🙏

    • @JillOverlord
      @JillOverlord 3 года назад +1

      @@t0digital спустя четыре месяца вспомнил о видосе, т.к. на первом крупном боевом проекте логирование превратилось в нечто жуткое.
      Миксин, от которого наследуется куча классов с переопределением методов логирования дополнительной информации о состоянии инстанса.
      Когда смотришь на uml диаграмму начинаешь понимать что где-то свернул не туда. Да и конфиг logging приближающийся к сотне строчек даже в отдельном файле смотрится не очень красиво.
      Вероятнее всего теперь все логирование переведу на loguru. В сумме больше кода, но... явное лучше, чем не явное :)
      Спасибо за видео!

    • @bakhramoff
      @bakhramoff 2 года назад

      @@t0digital Подскажите, пожалуйста, можно ли сделать так, чтобы error писал только в файл без вывода на экран? Благодарю

  • @simonp6725
    @simonp6725 3 года назад +4

    Оч нравятся видосы на канале в формате - "смотрите есть вот такая полезная штука, сейчас я вам покажу чем"

  • @ВячеславДолинский-г7ы

    Когда то участвовал в OLTP проекте (С++, linux). Логировка (несколько дивных С функций) сначала писалась в память , а потом на диск (для производительности). Когда сервис падал, все что было в памяти исчезало. На поиск ошибки уходило , в среднем, несколько дней. Меня попросили исправить баг -- в логах случайным образом появлялась буква "я". Вместо этого я написал новый многопоточный логировщик, который при падении сервиса записывал в файл все предсмертные логи и даже стек вызовов. На поиск и исправление ошибки мы начали тратить , в среднем, 5 минут. Спасибо за видео! Очень важная тема!

  • @SkyTiger86
    @SkyTiger86 3 года назад +10

    Огромное спасибо за полезную библиотеку! Очень бы хотелось увидеть видео с правилами логирования в python. Везде только описания библиотек, а вот как грамотно и с максимальной пользой вести логи - нет.

    • @AndrewTikhonov
      @AndrewTikhonov 2 года назад +2

      Первое правило - использовать logging, потому что все сторонние либы его юзают и он очень гибкий и позволяет прикрутить поверх все что надо. Второе правило - если у вас автономный сервис (бот, веб приложение) не пытаться самостоятельно писать в файл, а отправлять их в stderr, откуда заберут уже journald, fluentd и т.п.. Третье правило - не форматировать строки в логе самостоятельно, пусть в них вставляет данные logging (он это будет делать только если запись реально логируется)

  • @ИльяСпирков-ц5г
    @ИльяСпирков-ц5г Месяц назад

    Благодарю за разбор! Пока учусь на DS, затронул недавно лоигрование, даже на данном этапе практически все сказанное было понятно)

  • @siddkharta
    @siddkharta 2 года назад +1

    Такие видосы не стареют. Приходят новые возжаждавшие знаний, смотрят, пробуют, проникаются. И вот, уже очередной хлопает себя по лбу и идет этой новой дорогой. Классно. Большое спасибо. БОЛЬШОЕ СПАСИБО!

  • @СаняХомич
    @СаняХомич 4 года назад +8

    Дуже корисне відео для мене! Дякую!

  • @name1355_0ne
    @name1355_0ne 4 года назад +4

    Отличный формат коротких выпусков о таких полезных и приятных плюшках пайтона. Спасибо, познавательно!

  • @RustamGuliev
    @RustamGuliev 4 года назад +4

    Спасибо за видео!
    Было бы здорово, если бы показали как его в Django проект встроить.

  • @МихаилПересыпкин-к3ы

    Низкий поклон, то что нужно прямо сейчас!

    • @t0digital
      @t0digital  Год назад +1

      Рад, что полезно!

  • @andreymartynov3958
    @andreymartynov3958 4 года назад +4

    Заинтересовало, буду пробовать. Спасибо!

  • @BishopLong49
    @BishopLong49 5 месяцев назад

    Первое впечатление о логировании благодаря вам хорошее, всё прекрасно понял благодарю

  • @dronjoestar5220
    @dronjoestar5220 4 года назад +1

    Спасибо огромное.
    Действительно куда удобнее, чем принтом в файл записывать

  • @dimusss
    @dimusss 4 года назад +1

    После просмотра остается приятное ощущение, как от передачи с Николаем Николаевичем Дроздовым, «В мире... IT»)) Супер, спасибо за видео! Пойду прикручу логуру к проекту )

  • @КалёнаяСталь
    @КалёнаяСталь 3 года назад +1

    Хоспаде, а я искал тулзу что бы выводить логи в веб интерфейс, и вот он джсон формат, ура

  • @antonneanton
    @antonneanton 4 года назад +2

    Я использую structlog. Помогает делать логи с контекстом, очень удобно

  • @fransdeston8404
    @fransdeston8404 4 года назад

    Я такими темпами научусь писать простенькие программы) Вон логирование уже выучил) Спасибо, очень интересно!)

    • @t0digital
      @t0digital  4 года назад

      Отличный результат:)!

  • @МаксимСутягин-с9п
    @МаксимСутягин-с9п 3 года назад +2

    Большое спасибо. Классные разборы полезных библиотек, продолжайте, пожалуйста.

    • @t0digital
      @t0digital  3 года назад +1

      Спасибо! Будут ещё разборы

  • @senatortre7326
    @senatortre7326 4 года назад +3

    Огонь. С прошлого видоса начал Го учить (раньше думал о с++). Щас логи буду переписывать на Логуру)) вдохновляешь на дополнительную работу)) Давай ещё с тестированием может что-то? Pytest например. Ещё может подкинешь инфы о компиляции, как это работает, как завязать гошный бинарник с прогой на питоне...

    • @t0digital
      @t0digital  4 года назад +1

      Отлично:) Гошный бинарник завязать с прогой на питоне можно по-разному, через брокер сообщений, например (redis/rabbitMQ/another)

    • @senatortre7326
      @senatortre7326 4 года назад

      Диджитализируй! Изучу, спасибо

  • @adilrashitov2877
    @adilrashitov2877 4 года назад

    Здорово! Просто огонь библиотека! Канал Диджитализируй стал уже некоторым проводником в мире технологий

  • @woodorsha2955
    @woodorsha2955 2 года назад +1

    Длинный коооооооммеееннннттттт для продвижения ккккккаааааааааааанннннннннннннаааааааааллллллллллллааааааааааа и Лайк обязательно и подписка однозначно. Все четко и понятно. Без всяких ,, соплей,,

    • @t0digital
      @t0digital  2 года назад +1

      Спасибооо 💪💪💪

  • @jangrinchenko7981
    @jangrinchenko7981 Месяц назад

    Наверное это информация для продвинутых пользователей, не понял как создать логин и пароль , спасибо 😊

  • @pesycorm4639
    @pesycorm4639 3 года назад +1

    Ну это же просто пушка! Огромное спасибо за понятный и приятный видос)

  • @iam_evgen
    @iam_evgen 3 года назад

    Алексей, ты святой человек. Я проходил целые курсы по логгированию. Думал, ну как же так, в таком лаконичном языке Python могли сделать простейшую функцию записи ошибок в файл так сложно. А оказывается бывает иначе, реально в стилей Пайтон. Просто, функционально, красиво. Спасибо, огромное, человеческое спасибо!

  • @astalavista6329
    @astalavista6329 4 года назад +1

    Бэлин. Ролик за роликом полезная инфа. Огонёк. Спасибо)

  • @Logeru
    @Logeru 4 года назад +6

    Видосы нравятся, только не хватает старого доброго "Здорово, котаны" - когда слышишь и понимаешь, что сейчас будет что-то полезное, ламповое и интересное)

  • @PikaCh-t7i
    @PikaCh-t7i 4 года назад +2

    Храни тебя бог!

    • @t0digital
      @t0digital  4 года назад

      Спасибо-спасибо!

  • @nik-ix2md
    @nik-ix2md 4 года назад

    спасибо за наводку, настройка ротейшн ваще по красоте

    • @t0digital
      @t0digital  4 года назад

      Дааа, очень удобно

  • @metanoia-ca
    @metanoia-ca 4 года назад +7

    Алексей, спасибо за видео! Как всегда очень полезно! А Вы не подскажете, когда начнется Ваш курс?

    • @t0digital
      @t0digital  4 года назад +5

      Скоро начнется, информация будет на канале

    • @mikisor4372
      @mikisor4372 4 года назад +1

      @@t0digital Есть примерные сроки ?

    • @oZopHuk
      @oZopHuk 4 года назад

      @@t0digital Ждём не дождёмся. Как раз замаячили средства свободные на горизонте. =)

  • @aibatzhaisanov2296
    @aibatzhaisanov2296 3 года назад

    Спасибо! Отличная подача материала. Продолжайте пожалуйста. Очень познавательно и полезно. Привет из Казахстана. Удачи Вам!

  • @НикитаДавыдов-д3ь
    @НикитаДавыдов-д3ь 3 года назад +2

    Здравствуйте, Алексей, советую Вам рассказать людям про poetry, по моему мнению это незаменимый инструмент в любом development flow любого проекта, в частности про важность контроля совместимости версий пакетов

  • @DimiEG
    @DimiEG 4 года назад

    Как всегда полезно. Спасибо. Ждём новых роликов.

  • @ci_cd4834
    @ci_cd4834 2 года назад

    А вот полезное! Годнота, вот даже подпишусь за такое и плюсану!

  • @АлександрДиптан-щ6н

    Крутой разбор возможностей библиотеки! Лайк, подписка, все дела

  • @klalyananik
    @klalyananik 2 года назад

    Очень здорово и понятно обьяснил! С примерами. Прям круто, спасибо :)

  • @toomanof
    @toomanof 4 года назад

    Алексей, огромное Вам спасибо! Очень полезные видео.

    • @t0digital
      @t0digital  4 года назад

      Рад, что полезно! Спасибо

  • @444teraflops
    @444teraflops 4 года назад +3

    От души! Отключаю logging)

  • @BardusProstoi
    @BardusProstoi 4 года назад +1

    Хорошая либа. Теперь осталось наш легаси проект перевести на 3 версию

    • @t0digital
      @t0digital  4 года назад +1

      успехов вам!

  • @mikepalii3402
    @mikepalii3402 3 года назад

    спасибо, хотелось бы больше разборов таких полезных библиотек

  • @traffox
    @traffox 4 года назад

    Офигенно. Завтра же начну внедрять

  • @fedor_ado
    @fedor_ado 4 года назад

    Спасибо. Очень полезно. Буду пользоваться. )

  • @eldosbolatov3031
    @eldosbolatov3031 3 года назад

    Благодарность автору!!! это топчик

  • @romanrrv
    @romanrrv 3 года назад

    Очень интересно! Спасибо большое!

  • @LewaSGN
    @LewaSGN 4 года назад +14

    Красиво, конечно, но я уже привык к logging.
    Слишком много крови было пролито для его освоения. Я так просто не сдамся, нет!

  • @rusficdigital4990
    @rusficdigital4990 Год назад

    Красавчик, раскатал как надо

  • @АнтонинаСмет
    @АнтонинаСмет 4 года назад

    Спасибо за видео, как всегда супер!

  • @andreyshevtsov6071
    @andreyshevtsov6071 2 года назад

    Очень полезно видео. Спасибо.

  • @ЕрвандАгаджанян-в3к

    Супер! Спасибо) очень круто!!!!

    • @t0digital
      @t0digital  3 года назад

      Рад, что полезно!

  • @iurii.anfinogenov
    @iurii.anfinogenov 4 года назад

    Очень познавательно! Спасибо!

  • @engineerplays5855
    @engineerplays5855 3 года назад

    В таких видео надо обязательно рассказывать и учить кодеров, что не одними файлами логи едины, еще можно отправить в сислог или другой сборщик или агрегатор логов такой как logstash. Это даст понимание и привьет хорошие привычки

    • @CatWorldson
      @CatWorldson Год назад

      Ну так и видео не прото как хранить логи)
      Видео про конкретную либу, методы хранения и инструменты за пределами оного.
      А и да, об этом рассказывают конечно в общих темах

  • @AlexGott
    @AlexGott 4 года назад

    Спасибо огромное, вместе с новым деббагером в питоне жить всё круче и легче=)

  • @PythonDevelopment
    @PythonDevelopment 4 года назад +2

    Классный канал по Питону) Подписан всеми акками ибо на разных в разных местах. Сам пактикую сразу практику в приоритете, чем тупо чтение и мечтания.
    Беру бумагу и пока на работе сижу, прикидывваю какой у моей будущей проге будет функционал. Сейячас начал сниматьролики по питону, но много еще впереди, а материала валом ибоя в практику окунаюсь с головой чего и вам желаю. Всем добра народ!

  • @sorochinssky
    @sorochinssky 4 года назад

    Вот это огонь! Благодарю

    • @t0digital
      @t0digital  4 года назад

      Рад, что полезно!

  • @pukman676
    @pukman676 4 года назад

    Больше подобных полезных штук!

  • @HeyArtem
    @HeyArtem 2 года назад

    Класс! Спасибо 👍

  • @StoGigovo
    @StoGigovo 4 года назад

    Жги дальше! ) Лайк!

  • @evrmk
    @evrmk 4 года назад +1

    Видосы по Python, ура!
    Кстати, когда начало курса?😁

    • @t0digital
      @t0digital  4 года назад +1

      Скоро будет анонс на канале:)

    • @evrmk
      @evrmk 4 года назад

      @@t0digital Уже заваривать чаëк?)

  • @captainpronin953
    @captainpronin953 2 года назад

    Спасибо, так как начал изучать питончика, а до этого знал всего лишь старенький Паскаль и асм на z80, по этому принты принты.....

  • @fri5tl
    @fri5tl 4 года назад +1

    после каждого твоего видоса появляется желание продолжать учить кодить!
    а это может дать не каждый препод даже за деньги

  • @juriyshreder9055
    @juriyshreder9055 4 года назад

    большое спасибо, про print уже забыл

  • @ilyachch
    @ilyachch 4 года назад +11

    Мне кажется, не хватает таки применения этой либы в том же Django.

  • @igoranisenko5397
    @igoranisenko5397 3 года назад

    Супер!

  • @ssn1975
    @ssn1975 4 года назад

    Красиво. Спасибо.

  • @ДмитрийДунаев-р5т
    @ДмитрийДунаев-р5т Год назад +2

    Параметр end="" не завезли. Функция print победила. Расходимся. Конечно же шутка, библа ниче так, но лучше базовый логгер разобрать раз и навсегда. Кстати, я так и не понял, откуда loguru берет время для своих логов по дефолту. Время в моих логах отличается от системного минут на 6

  • @sapfire65
    @sapfire65 2 месяца назад

    Жирный лайк за обзор с 2024 года))

  • @eugene_mountainland
    @eugene_mountainland Год назад

    круть, спасибо)

  • @CjEcho74
    @CjEcho74 2 года назад

    Спасибо, братишка.

  • @oleksandrkudryavtsev5736
    @oleksandrkudryavtsev5736 3 года назад

    Спасибо!

  • @richardclark4111
    @richardclark4111 4 года назад

    Сначала подумал... А кокой смысл то юзать какую-то другую либу, исли родной логгер и так прост. Но теперь все... спасибо. Моя жизнь никогда не станет прежней... Спасибо за ролик !

    • @t0digital
      @t0digital  4 года назад +1

      loguru кайфовый, дааа

  • @Игорь-ч6ф3и
    @Игорь-ч6ф3и 4 года назад

    loguru офигенная штука, очень удобна в использовании. Единственное, пришлось мне почесать голову, как бы мне вытащить трейсбэк как в логуру, но чтобы я его перехватил и отправил в другое место.
    def capture_exception_output(title: str) -> Optional[str]:
    storage = []
    sink_id = logger.add(sink=lambda msg: storage.append(msg))
    logger.exception(title)
    logger.remove(sink_id)
    return storage[0] if storage else None
    Вроде работает, но есть у меня сомнения, что если в программе будет сразу несколько уровней логгирования, всё это взорвётся к чертям.

  • @mrKazzila
    @mrKazzila 4 года назад

    Спасибо, пошел убирать принты)

    • @t0digital
      @t0digital  4 года назад

      Отличный план!

  • @AI-xi4jk
    @AI-xi4jk Год назад

    Интересно было бы услышать как они с иерархией логов работают. Наверное это рут лог, а там добавлять можно. Вообще классно что всякая ротация встроена, но в основном это решается внешними инструментами если вы на докере и кубернетесе. Думаю это для самостоятельных приложений только типа десктоп или эмбед.

  • @maximusofigenus200
    @maximusofigenus200 4 года назад

    За логгер отдельный лайк и подписка. =)

  • @MIRISU2
    @MIRISU2 4 года назад

    красота!

  • @r35p3ct00
    @r35p3ct00 2 года назад

    Мега полезно

  • @dimakof
    @dimakof 4 года назад

    очень круто

  • @АлексейБ-ж8л
    @АлексейБ-ж8л 4 года назад +2

    Ребят, не подскажете пример грамотно структурированного проекта на просторах гитхаб?
    А Алексей, как всегда топ)

    • @amidobox
      @amidobox 4 года назад

      Включу экстрасенса и предположу, что необходим проект связанный с Django: github.com/mozilla/bedrock

    • @АлексейБ-ж8л
      @АлексейБ-ж8л 4 года назад

      @@amidobox Пока у меня десктопное приложение, но в любом случае спасибо

  • @CatWorldson
    @CatWorldson Год назад

    Впервые услышал "ротирование" логов) Сначала и не понял
    Ротация как-то более корректно будет все же

  • @djaniky
    @djaniky 3 года назад

    thanks very much

  • @vvvvvvvviolette
    @vvvvvvvviolette 2 месяца назад

    крутая библиотека

  • @BorysOliinyk
    @BorysOliinyk 4 года назад

    Круто !!!)
    Сними видос по навигации в VIMе )
    Команд очень много, вроде как, и не пойму какие запоминать

    • @t0digital
      @t0digital  4 года назад

      самое первое видео на канале:)

    • @BorysOliinyk
      @BorysOliinyk 4 года назад

      Диджитализируй! Отлично, спасибо большое ) не заметил видео, так как подписался только на видосе про копирование гигабайтных файлов )

  • @МундштукВезучий
    @МундштукВезучий 4 года назад

    (какой нибудь комментарий)
    Видос в тему, думаю придется добавлять логирование в проект один...
    Не придется выдумывать велосипед)

  • @nitroflap
    @nitroflap 4 года назад +1

    Есть предложение, раз вы сделали видео по логированию в питоне, с использованием этой библиотеки, то... есть почти с таким же названием и с почти таким же интерфейсом библиотека на языке golang. Может вы о ней тоже расскажите? Ну как-бы язык го на этом канале и все такое...

    • @t0digital
      @t0digital  4 года назад

      спасибо за идею:)

    • @nitroflap
      @nitroflap 4 года назад

      @Гарри Смит Кхм. Нет.

  • @alexeyluzin4485
    @alexeyluzin4485 3 года назад

    Чудесная либа, спасибо! Кстати, а где лучше хранить джанговские логи? Внутри приложения в app/logs/? Вместе с остальными в системе в /var/log/app? С точки зрения стандартизации, в общей системной папке удобнее, но тогда приложение должно знать о внешнем мире. Подавать путь через переменные окружения? Но все равно какой дефолтный путь, если не подать?

  • @ВадимРумян
    @ВадимРумян 3 года назад

    Библиотека хорошая, однако, плюс logging в том, что это калька с log4j из Java. В .NET такая же калька называется Log4Net, в PHP - это monolog. Привыкаешь уже к подходу-то.

  • @dmitryn.4506
    @dmitryn.4506 3 года назад +2

    Посмотрел видео про logging...
    "Да ну нахрен! Проще самому с нуля логгер написать, чем каждый раз этого слона настраивать!.."
    Посмотрел видео про Loguru...
    "Да ну нахрен! Чё велосипед изобретать, если нормальные пацаны уже всё чётко сделали!.." 😅

  • @НикитаСолодков-в4с
    @НикитаСолодков-в4с 9 месяцев назад

    Крутое видео! А в 2023 году тоже loguru используете? Или появилось что-то поинтереснее? О_о

  • @oZopHuk
    @oZopHuk 4 года назад

    Офигеть, так просто.

  • @79fz270704
    @79fz270704 4 года назад

    Удобная либа, жирный лайк

  • @fahrenheit1863
    @fahrenheit1863 Год назад

    Только начал изучать логирование и пока не особо поникаю как его использовать, но принты тоже могут писать в файл.

  • @smaldash
    @smaldash 4 года назад +1

    Зачёт, но и сентри тоже по питонячий очень =)

  • @VakaramGolang
    @VakaramGolang Год назад

    Видать format = не работает в новом питоне получается ? блин ну во первых не заполнен message и у тебя работает , так же и тайм, а level вообще вроде как зарезервирован.... блин раньше работало я помню пользовался жи )

  • @xumpocmb-404
    @xumpocmb-404 Месяц назад

    а если у меня проект разделен на модули, то в каждом модуле надо делать импорт и заново писать logger.add("debug.log", format="{time} {level} {message}", level="ERROR", rotation="1 MB", compression="zip") ?

  • @aasarkisov
    @aasarkisov 4 года назад

    Оставьте logrotate его работу) Не нужно делать из приложения комбаин, тем более, что "ротирование" таким образом не решает вопрос с исчерпыванием дискового пространства, оно все равно закончится хоть и позже.

    • @t0digital
      @t0digital  4 года назад

      Хорошо, когда есть варианты:) Можно настроить, чтобы старые логи удалялись

  • @uszr1
    @uszr1 4 года назад

    пасибо! буду пробовать. Когда будет инфа по курсу?

    • @t0digital
      @t0digital  4 года назад +1

      скоро будет анонс на канале

  • @zyoma9958
    @zyoma9958 4 года назад +4

    А можно ли с помощью данной библиотеки, например ,отправлять логи в телеграм?

    • @evrmk
      @evrmk 4 года назад +1

      Почитай документацию, наверняка можно написать свои хендлеры и отправлять сообщение в телеграм.

    • @t0digital
      @t0digital  4 года назад +4

      можно, конечно

  • @ФедорКосолапов-р6д
    @ФедорКосолапов-р6д 4 года назад

    Все, завтра внедряю в проект :) Кроме шуток!

    • @t0digital
      @t0digital  4 года назад

      Вот, отлично:)!

  • @denisbel9740
    @denisbel9740 4 года назад +1

    Библиотека и правда классная, прям идеалогия пути python. Но что делать если ты используешь стороние библиотеки, ту же sqlalchemy которая ведет логгирование через logging😭

  • @sergiyr9152
    @sergiyr9152 4 года назад

    хорошая библиотека, пара минусов: это не часть питона, т.е. не понятно как будет поддерживаться через несколько лет и как будет импрувиться; в большом проекте часто модули логируються стандартным логером и добавляя свой собственный ты теряешь контроль над уже существующими... ну ротэйшен, компрешен хорошие фичи!

  • @Utoka25
    @Utoka25 2 года назад

    Выглядит очень красиво. Спасибо! Если пишу логи в файл .log, можно его где-то увидеть таким же красивым, как в консоли Python?