@@t0digital спустя четыре месяца вспомнил о видосе, т.к. на первом крупном боевом проекте логирование превратилось в нечто жуткое. Миксин, от которого наследуется куча классов с переопределением методов логирования дополнительной информации о состоянии инстанса. Когда смотришь на uml диаграмму начинаешь понимать что где-то свернул не туда. Да и конфиг logging приближающийся к сотне строчек даже в отдельном файле смотрится не очень красиво. Вероятнее всего теперь все логирование переведу на loguru. В сумме больше кода, но... явное лучше, чем не явное :) Спасибо за видео!
Когда то участвовал в OLTP проекте (С++, linux). Логировка (несколько дивных С функций) сначала писалась в память , а потом на диск (для производительности). Когда сервис падал, все что было в памяти исчезало. На поиск ошибки уходило , в среднем, несколько дней. Меня попросили исправить баг -- в логах случайным образом появлялась буква "я". Вместо этого я написал новый многопоточный логировщик, который при падении сервиса записывал в файл все предсмертные логи и даже стек вызовов. На поиск и исправление ошибки мы начали тратить , в среднем, 5 минут. Спасибо за видео! Очень важная тема!
Такие видосы не стареют. Приходят новые возжаждавшие знаний, смотрят, пробуют, проникаются. И вот, уже очередной хлопает себя по лбу и идет этой новой дорогой. Классно. Большое спасибо. БОЛЬШОЕ СПАСИБО!
Огромное спасибо за полезную библиотеку! Очень бы хотелось увидеть видео с правилами логирования в python. Везде только описания библиотек, а вот как грамотно и с максимальной пользой вести логи - нет.
Первое правило - использовать logging, потому что все сторонние либы его юзают и он очень гибкий и позволяет прикрутить поверх все что надо. Второе правило - если у вас автономный сервис (бот, веб приложение) не пытаться самостоятельно писать в файл, а отправлять их в stderr, откуда заберут уже journald, fluentd и т.п.. Третье правило - не форматировать строки в логе самостоятельно, пусть в них вставляет данные logging (он это будет делать только если запись реально логируется)
Алексей, ты святой человек. Я проходил целые курсы по логгированию. Думал, ну как же так, в таком лаконичном языке Python могли сделать простейшую функцию записи ошибок в файл так сложно. А оказывается бывает иначе, реально в стилей Пайтон. Просто, функционально, красиво. Спасибо, огромное, человеческое спасибо!
После просмотра остается приятное ощущение, как от передачи с Николаем Николаевичем Дроздовым, «В мире... IT»)) Супер, спасибо за видео! Пойду прикручу логуру к проекту )
Здравствуйте, Алексей, советую Вам рассказать людям про poetry, по моему мнению это незаменимый инструмент в любом development flow любого проекта, в частности про важность контроля совместимости версий пакетов
Огонь. С прошлого видоса начал Го учить (раньше думал о с++). Щас логи буду переписывать на Логуру)) вдохновляешь на дополнительную работу)) Давай ещё с тестированием может что-то? Pytest например. Ещё может подкинешь инфы о компиляции, как это работает, как завязать гошный бинарник с прогой на питоне...
Длинный коооооооммеееннннттттт для продвижения ккккккаааааааааааанннннннннннннаааааааааллллллллллллааааааааааа и Лайк обязательно и подписка однозначно. Все четко и понятно. Без всяких ,, соплей,,
В таких видео надо обязательно рассказывать и учить кодеров, что не одними файлами логи едины, еще можно отправить в сислог или другой сборщик или агрегатор логов такой как logstash. Это даст понимание и привьет хорошие привычки
Ну так и видео не прото как хранить логи) Видео про конкретную либу, методы хранения и инструменты за пределами оного. А и да, об этом рассказывают конечно в общих темах
Чудесная либа, спасибо! Кстати, а где лучше хранить джанговские логи? Внутри приложения в app/logs/? Вместе с остальными в системе в /var/log/app? С точки зрения стандартизации, в общей системной папке удобнее, но тогда приложение должно знать о внешнем мире. Подавать путь через переменные окружения? Но все равно какой дефолтный путь, если не подать?
Интересно было бы услышать как они с иерархией логов работают. Наверное это рут лог, а там добавлять можно. Вообще классно что всякая ротация встроена, но в основном это решается внешними инструментами если вы на докере и кубернетесе. Думаю это для самостоятельных приложений только типа десктоп или эмбед.
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 Вроде работает, но есть у меня сомнения, что если в программе будет сразу несколько уровней логгирования, всё это взорвётся к чертям.
Библиотека хорошая, однако, плюс logging в том, что это калька с log4j из Java. В .NET такая же калька называется Log4Net, в PHP - это monolog. Привыкаешь уже к подходу-то.
Классный канал по Питону) Подписан всеми акками ибо на разных в разных местах. Сам пактикую сразу практику в приоритете, чем тупо чтение и мечтания. Беру бумагу и пока на работе сижу, прикидывваю какой у моей будущей проге будет функционал. Сейячас начал сниматьролики по питону, но много еще впереди, а материала валом ибоя в практику окунаюсь с головой чего и вам желаю. Всем добра народ!
а если у меня проект разделен на модули, то в каждом модуле надо делать импорт и заново писать logger.add("debug.log", format="{time} {level} {message}", level="ERROR", rotation="1 MB", compression="zip") ?
Видать format = не работает в новом питоне получается ? блин ну во первых не заполнен message и у тебя работает , так же и тайм, а level вообще вроде как зарезервирован.... блин раньше работало я помню пользовался жи )
Видосы нравятся, только не хватает старого доброго "Здорово, котаны" - когда слышишь и понимаешь, что сейчас будет что-то полезное, ламповое и интересное)
Сначала подумал... А кокой смысл то юзать какую-то другую либу, исли родной логгер и так прост. Но теперь все... спасибо. Моя жизнь никогда не станет прежней... Спасибо за ролик !
А есть возможность отслеживать ошибки в каком-либо классе в целом. Что-то типа декоратора catch. Пытаюсь залогировать все class based вьюшки, но не знаю как
Параметр end="" не завезли. Функция print победила. Расходимся. Конечно же шутка, библа ниче так, но лучше базовый логгер разобрать раз и навсегда. Кстати, я так и не понял, откуда loguru берет время для своих логов по дефолту. Время в моих логах отличается от системного минут на 6
Привет. Решил писать не под роликом с книжками)) Есть идея для видео. Django ORM. Вот меня лично интересует, если стоит вопрос качественной оптимизации запросов, то все говорят что Джанго ОРМ это плохо и нужно юзать Алхимию. Вот я склоняюсь ближе к чистому SQL в таком случае. Что ты скажешь?
Привет! Для сложных запросов я точно выберу голый SQL, а не Django ORM. С алхимией пока много не работал, знаю, что на ней можно выразить сильно больше, чем на Django ORM, но насколько это читаемо и близко к родному SQL не могу сказать. Скорее всего тоже для сложных длинных запросов, которые ты и так сидишь долго оптимизируешь на скорость выполнения (когда это важно) я выберу сырой SQL. Хотя у него есть свои минусы, при переименовании таблиц/колонок надо все сырые SQL рефачить. Впрочем это можно облегчить, если брать эти имена полей/таблиц из ORM сущностей.
Библиотека и правда классная, прям идеалогия пути python. Но что делать если ты используешь стороние библиотеки, ту же sqlalchemy которая ведет логгирование через logging😭
[info ] [logger ] purge log fired. processing... [info ] [logger ] purge finished! Не подскажете? Это случайно не какой-то типа взлом там данных личных паролей и т.д.
Оставьте logrotate его работу) Не нужно делать из приложения комбаин, тем более, что "ротирование" таким образом не решает вопрос с исчерпыванием дискового пространства, оно все равно закончится хоть и позже.
Есть предложение, раз вы сделали видео по логированию в питоне, с использованием этой библиотеки, то... есть почти с таким же названием и с почти таким же интерфейсом библиотека на языке golang. Может вы о ней тоже расскажите? Ну как-бы язык го на этом канале и все такое...
хорошая библиотека, пара минусов: это не часть питона, т.е. не понятно как будет поддерживаться через несколько лет и как будет импрувиться; в большом проекте часто модули логируються стандартным логером и добавляя свой собственный ты теряешь контроль над уже существующими... ну ротэйшен, компрешен хорошие фичи!
Наверное, выскажу общее мнение, что видос как всегда крайне понятный, а самое главное полезный, круто, огонь 👍🏻👍🏻
Спасибооо 🙏
@@t0digital спустя четыре месяца вспомнил о видосе, т.к. на первом крупном боевом проекте логирование превратилось в нечто жуткое.
Миксин, от которого наследуется куча классов с переопределением методов логирования дополнительной информации о состоянии инстанса.
Когда смотришь на uml диаграмму начинаешь понимать что где-то свернул не туда. Да и конфиг logging приближающийся к сотне строчек даже в отдельном файле смотрится не очень красиво.
Вероятнее всего теперь все логирование переведу на loguru. В сумме больше кода, но... явное лучше, чем не явное :)
Спасибо за видео!
@@t0digital Подскажите, пожалуйста, можно ли сделать так, чтобы error писал только в файл без вывода на экран? Благодарю
Когда то участвовал в OLTP проекте (С++, linux). Логировка (несколько дивных С функций) сначала писалась в память , а потом на диск (для производительности). Когда сервис падал, все что было в памяти исчезало. На поиск ошибки уходило , в среднем, несколько дней. Меня попросили исправить баг -- в логах случайным образом появлялась буква "я". Вместо этого я написал новый многопоточный логировщик, который при падении сервиса записывал в файл все предсмертные логи и даже стек вызовов. На поиск и исправление ошибки мы начали тратить , в среднем, 5 минут. Спасибо за видео! Очень важная тема!
Оч нравятся видосы на канале в формате - "смотрите есть вот такая полезная штука, сейчас я вам покажу чем"
Такие видосы не стареют. Приходят новые возжаждавшие знаний, смотрят, пробуют, проникаются. И вот, уже очередной хлопает себя по лбу и идет этой новой дорогой. Классно. Большое спасибо. БОЛЬШОЕ СПАСИБО!
Низкий поклон, то что нужно прямо сейчас!
Рад, что полезно!
Благодарю за разбор! Пока учусь на DS, затронул недавно лоигрование, даже на данном этапе практически все сказанное было понятно)
Отличный формат коротких выпусков о таких полезных и приятных плюшках пайтона. Спасибо, познавательно!
Дуже корисне відео для мене! Дякую!
Огромное спасибо за полезную библиотеку! Очень бы хотелось увидеть видео с правилами логирования в python. Везде только описания библиотек, а вот как грамотно и с максимальной пользой вести логи - нет.
Первое правило - использовать logging, потому что все сторонние либы его юзают и он очень гибкий и позволяет прикрутить поверх все что надо. Второе правило - если у вас автономный сервис (бот, веб приложение) не пытаться самостоятельно писать в файл, а отправлять их в stderr, откуда заберут уже journald, fluentd и т.п.. Третье правило - не форматировать строки в логе самостоятельно, пусть в них вставляет данные logging (он это будет делать только если запись реально логируется)
Спасибо за видео!
Было бы здорово, если бы показали как его в Django проект встроить.
Заинтересовало, буду пробовать. Спасибо!
Спасибо огромное.
Действительно куда удобнее, чем принтом в файл записывать
Здорово! Просто огонь библиотека! Канал Диджитализируй стал уже некоторым проводником в мире технологий
Алексей, ты святой человек. Я проходил целые курсы по логгированию. Думал, ну как же так, в таком лаконичном языке Python могли сделать простейшую функцию записи ошибок в файл так сложно. А оказывается бывает иначе, реально в стилей Пайтон. Просто, функционально, красиво. Спасибо, огромное, человеческое спасибо!
Я такими темпами научусь писать простенькие программы) Вон логирование уже выучил) Спасибо, очень интересно!)
Отличный результат:)!
Я использую structlog. Помогает делать логи с контекстом, очень удобно
Первое впечатление о логировании благодаря вам хорошее, всё прекрасно понял благодарю
После просмотра остается приятное ощущение, как от передачи с Николаем Николаевичем Дроздовым, «В мире... IT»)) Супер, спасибо за видео! Пойду прикручу логуру к проекту )
Спасибо!
От души! Отключаю logging)
Алексей, спасибо за видео! Как всегда очень полезно! А Вы не подскажете, когда начнется Ваш курс?
Скоро начнется, информация будет на канале
@@t0digital Есть примерные сроки ?
@@t0digital Ждём не дождёмся. Как раз замаячили средства свободные на горизонте. =)
Здравствуйте, Алексей, советую Вам рассказать людям про poetry, по моему мнению это незаменимый инструмент в любом development flow любого проекта, в частности про важность контроля совместимости версий пакетов
Хоспаде, а я искал тулзу что бы выводить логи в веб интерфейс, и вот он джсон формат, ура
Огонь. С прошлого видоса начал Го учить (раньше думал о с++). Щас логи буду переписывать на Логуру)) вдохновляешь на дополнительную работу)) Давай ещё с тестированием может что-то? Pytest например. Ещё может подкинешь инфы о компиляции, как это работает, как завязать гошный бинарник с прогой на питоне...
Отлично:) Гошный бинарник завязать с прогой на питоне можно по-разному, через брокер сообщений, например (redis/rabbitMQ/another)
Диджитализируй! Изучу, спасибо
Большое спасибо. Классные разборы полезных библиотек, продолжайте, пожалуйста.
Спасибо! Будут ещё разборы
спасибо за наводку, настройка ротейшн ваще по красоте
Дааа, очень удобно
Бэлин. Ролик за роликом полезная инфа. Огонёк. Спасибо)
Длинный коооооооммеееннннттттт для продвижения ккккккаааааааааааанннннннннннннаааааааааллллллллллллааааааааааа и Лайк обязательно и подписка однозначно. Все четко и понятно. Без всяких ,, соплей,,
Спасибооо 💪💪💪
Крутой разбор возможностей библиотеки! Лайк, подписка, все дела
Как всегда полезно. Спасибо. Ждём новых роликов.
Красиво, конечно, но я уже привык к logging.
Слишком много крови было пролито для его освоения. Я так просто не сдамся, нет!
понимаю:)
А вот полезное! Годнота, вот даже подпишусь за такое и плюсану!
Офигенно. Завтра же начну внедрять
Ну это же просто пушка! Огромное спасибо за понятный и приятный видос)
Спасибо! Отличная подача материала. Продолжайте пожалуйста. Очень познавательно и полезно. Привет из Казахстана. Удачи Вам!
Алексей, огромное Вам спасибо! Очень полезные видео.
Рад, что полезно! Спасибо
Храни тебя бог!
Спасибо-спасибо!
Очень здорово и понятно обьяснил! С примерами. Прям круто, спасибо :)
Спасибо, опять спасибо.
Погрузился...
Благодарность автору!!! это топчик
спасибо, хотелось бы больше разборов таких полезных библиотек
Спасибо. Очень полезно. Буду пользоваться. )
Очень интересно! Спасибо большое!
Красавчик, раскатал как надо
В таких видео надо обязательно рассказывать и учить кодеров, что не одними файлами логи едины, еще можно отправить в сислог или другой сборщик или агрегатор логов такой как logstash. Это даст понимание и привьет хорошие привычки
Ну так и видео не прото как хранить логи)
Видео про конкретную либу, методы хранения и инструменты за пределами оного.
А и да, об этом рассказывают конечно в общих темах
Блин! Классная штука! Спасибо тебе. Как раз хотел с логгерами поработать)))
Видосы по Python, ура!
Кстати, когда начало курса?😁
Скоро будет анонс на канале:)
@@t0digital Уже заваривать чаëк?)
Спасибо огромное, вместе с новым деббагером в питоне жить всё круче и легче=)
Больше подобных полезных штук!
Чудесная либа, спасибо! Кстати, а где лучше хранить джанговские логи? Внутри приложения в app/logs/? Вместе с остальными в системе в /var/log/app? С точки зрения стандартизации, в общей системной папке удобнее, но тогда приложение должно знать о внешнем мире. Подавать путь через переменные окружения? Но все равно какой дефолтный путь, если не подать?
Спасибо за видео, как всегда супер!
Наверное это информация для продвинутых пользователей, не понял как создать логин и пароль , спасибо 😊
Очень полезно видео. Спасибо.
Супер! Спасибо) очень круто!!!!
Рад, что полезно!
Интересно было бы услышать как они с иерархией логов работают. Наверное это рут лог, а там добавлять можно. Вообще классно что всякая ротация встроена, но в основном это решается внешними инструментами если вы на докере и кубернетесе. Думаю это для самостоятельных приложений только типа десктоп или эмбед.
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
Вроде работает, но есть у меня сомнения, что если в программе будет сразу несколько уровней логгирования, всё это взорвётся к чертям.
Библиотека хорошая, однако, плюс logging в том, что это калька с log4j из Java. В .NET такая же калька называется Log4Net, в PHP - это monolog. Привыкаешь уже к подходу-то.
Вот это огонь! Благодарю
Рад, что полезно!
после каждого твоего видоса появляется желание продолжать учить кодить!
а это может дать не каждый препод даже за деньги
Отличное видео! Спасибо.
Спасибо, так как начал изучать питончика, а до этого знал всего лишь старенький Паскаль и асм на z80, по этому принты принты.....
Жги дальше! ) Лайк!
большое спасибо, про print уже забыл
Класс! Спасибо 👍
Спасибо, братишка.
Классный канал по Питону) Подписан всеми акками ибо на разных в разных местах. Сам пактикую сразу практику в приоритете, чем тупо чтение и мечтания.
Беру бумагу и пока на работе сижу, прикидывваю какой у моей будущей проге будет функционал. Сейячас начал сниматьролики по питону, но много еще впереди, а материала валом ибоя в практику окунаюсь с головой чего и вам желаю. Всем добра народ!
а если у меня проект разделен на модули, то в каждом модуле надо делать импорт и заново писать logger.add("debug.log", format="{time} {level} {message}", level="ERROR", rotation="1 MB", compression="zip") ?
Крутое видео! А в 2023 году тоже loguru используете? Или появилось что-то поинтереснее? О_о
Хорошая либа. Теперь осталось наш легаси проект перевести на 3 версию
успехов вам!
круть, спасибо)
Спасибо, пошел убирать принты)
Отличный план!
За логгер отдельный лайк и подписка. =)
пасибо! буду пробовать. Когда будет инфа по курсу?
скоро будет анонс на канале
Красиво. Спасибо.
Мне кажется, не хватает таки применения этой либы в том же Django.
Ребят, не подскажете пример грамотно структурированного проекта на просторах гитхаб?
А Алексей, как всегда топ)
Включу экстрасенса и предположу, что необходим проект связанный с Django: github.com/mozilla/bedrock
@@amidobox Пока у меня десктопное приложение, но в любом случае спасибо
Видать format = не работает в новом питоне получается ? блин ну во первых не заполнен message и у тебя работает , так же и тайм, а level вообще вроде как зарезервирован.... блин раньше работало я помню пользовался жи )
Видосы нравятся, только не хватает старого доброго "Здорово, котаны" - когда слышишь и понимаешь, что сейчас будет что-то полезное, ламповое и интересное)
Только начал изучать логирование и пока не особо поникаю как его использовать, но принты тоже могут писать в файл.
(какой нибудь комментарий)
Видос в тему, думаю придется добавлять логирование в проект один...
Не придется выдумывать велосипед)
На продакшане что лучше использовать logging или loguru? В джанго том же. У loguru меньше возможностей, поэтому она легче?
Loguru проще настраивается, вот и всё. Использовать можно по вкусу, хоть logging, хоть loguru.
@@t0digital ух, спасибо за быстрый ответ. Очень радует, что отвечаете на вопросы😁
Сначала подумал... А кокой смысл то юзать какую-то другую либу, исли родной логгер и так прост. Но теперь все... спасибо. Моя жизнь никогда не станет прежней... Спасибо за ролик !
loguru кайфовый, дааа
Круто !!!)
Сними видос по навигации в VIMе )
Команд очень много, вроде как, и не пойму какие запоминать
самое первое видео на канале:)
Диджитализируй! Отлично, спасибо большое ) не заметил видео, так как подписался только на видосе про копирование гигабайтных файлов )
А есть возможность отслеживать ошибки в каком-либо классе в целом. Что-то типа декоратора catch. Пытаюсь залогировать все class based вьюшки, но не знаю как
что именно сложно настроить в logging ?
Спасибо за обзор крутых фич для пайтона, подскажите пожалуйста, как его можно с Django интегрировать?
Параметр end="" не завезли. Функция print победила. Расходимся. Конечно же шутка, библа ниче так, но лучше базовый логгер разобрать раз и навсегда. Кстати, я так и не понял, откуда loguru берет время для своих логов по дефолту. Время в моих логах отличается от системного минут на 6
Привет. Решил писать не под роликом с книжками))
Есть идея для видео. Django ORM. Вот меня лично интересует, если
стоит вопрос качественной оптимизации запросов, то все говорят что
Джанго ОРМ это плохо и нужно юзать Алхимию. Вот я склоняюсь ближе к
чистому SQL в таком случае. Что ты скажешь?
Привет! Для сложных запросов я точно выберу голый SQL, а не Django ORM. С алхимией пока много не работал, знаю, что на ней можно выразить сильно больше, чем на Django ORM, но насколько это читаемо и близко к родному SQL не могу сказать. Скорее всего тоже для сложных длинных запросов, которые ты и так сидишь долго оптимизируешь на скорость выполнения (когда это важно) я выберу сырой SQL. Хотя у него есть свои минусы, при переименовании таблиц/колонок надо все сырые SQL рефачить. Впрочем это можно облегчить, если брать эти имена полей/таблиц из ORM сущностей.
@@t0digital поддержу
Спасибо!
А есть библиотека, чтобы логи сразу писать в базу данных?
Библиотека и правда классная, прям идеалогия пути python. Но что делать если ты используешь стороние библиотеки, ту же sqlalchemy которая ведет логгирование через logging😭
Выглядит очень красиво. Спасибо! Если пишу логи в файл .log, можно его где-то увидеть таким же красивым, как в консоли Python?
разве в html сохранять
[info ] [logger ] purge log fired. processing... [info ]
[logger ] purge finished!
Не подскажете? Это случайно не какой-то типа взлом там данных личных паролей и т.д.
Оставьте logrotate его работу) Не нужно делать из приложения комбаин, тем более, что "ротирование" таким образом не решает вопрос с исчерпыванием дискового пространства, оно все равно закончится хоть и позже.
Хорошо, когда есть варианты:) Можно настроить, чтобы старые логи удалялись
Есть предложение, раз вы сделали видео по логированию в питоне, с использованием этой библиотеки, то... есть почти с таким же названием и с почти таким же интерфейсом библиотека на языке golang. Может вы о ней тоже расскажите? Ну как-бы язык го на этом канале и все такое...
спасибо за идею:)
@Гарри Смит Кхм. Нет.
Жирный лайк за обзор с 2024 года))
А можно ли с помощью данной библиотеки, например ,отправлять логи в телеграм?
Почитай документацию, наверняка можно написать свои хендлеры и отправлять сообщение в телеграм.
можно, конечно
Супер!
хорошая библиотека, пара минусов: это не часть питона, т.е. не понятно как будет поддерживаться через несколько лет и как будет импрувиться; в большом проекте часто модули логируються стандартным логером и добавляя свой собственный ты теряешь контроль над уже существующими... ну ротэйшен, компрешен хорошие фичи!
Удобная либа, жирный лайк
Зачёт, но и сентри тоже по питонячий очень =)