Python Logging: Правильное Логирование за 20 минут

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ม.ค. 2025

ความคิดเห็น • 18

  • @anywaysadness6024
    @anywaysadness6024 2 หลายเดือนก่อน +3

    Отличное объяснение, все четко и понятно. Мне как начинающему бекендеру было все ясно

  • @МАТВЕЙБРУВЕРИС-ш3с
    @МАТВЕЙБРУВЕРИС-ш3с 2 หลายเดือนก่อน

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

  • @yaroslavbelmach
    @yaroslavbelmach 2 หลายเดือนก่อน

    Очень крутое объяснение! Всё наглядно, понятно и структурировано. Спасибо

    • @yaroslavbelmach
      @yaroslavbelmach 2 หลายเดือนก่อน

      было бы ещё круто эти файлы на гитхаб залить и ссылочку дать. т.к. веду свой конспект и было бы удобно вставить это туда

  • @АртёмМеркулов-ю3к
    @АртёмМеркулов-ю3к หลายเดือนก่อน

    Спасибо за видео - очень полезно!

  • @Alsurnov
    @Alsurnov หลายเดือนก่อน +1

    Спасибо за видео. Очень классно. А по graphQL strawberry будет видео (обработка ошибок если что-то не найдено или нет прав, авторизация, регистрация, пагинация данных при запросе и т.д.)?

  • @negonifas
    @negonifas 2 หลายเดือนก่อน

    Гениально!
    Спасибо тебе большое, жаль дать пока не чего...

    • @nikolaypavlin
      @nikolaypavlin  2 หลายเดือนก่อน

      Обратная связь - это очень ценно

  • @whosane9923
    @whosane9923 2 หลายเดือนก่อน

    Мелочь, а приятнААА)))

  • @makimkin
    @makimkin หลายเดือนก่อน

    а можно жит?

  • @hsqlk
    @hsqlk 2 หลายเดือนก่อน

    Отличное видео!
    А вот эти все манипуляции с логами не ресурсно затратны? Мне казалось в бэкенде каждый байт экономят: вместо f строк - .formating и тп

    • @nikolaypavlin
      @nikolaypavlin  2 หลายเดือนก่อน

      Не знаю откуда предополжение, что f-строки медленнее, мне казалось, что уже давно не так, для себя пруфанул это вот так:
      import timeit
      # Исходные данные для подстановки
      name = "Alice"
      age = 30
      city = "Wonderland"
      occupation = "Software Engineer" * 100
      # Короткая строка
      def f_string_short():
      return f"{name}"
      def format_string_short():
      return "{}".format(name)
      # Средняя строка
      def f_string_medium():
      return f"{name} is {age} years old and lives in {city}."
      def format_string_medium():
      return "{} is {} years old and lives in {}.".format(name, age, city)
      # Очень длинная строка
      def f_string_long():
      return f"{name} is {age} years old, lives in {city}, and works as a {occupation}. "
      def format_string_long():
      return "{} is {} years old, lives in {}, and works as a {}. ".format(name, age, city, occupation)
      # Количество повторений для точности измерений
      repetitions = 1_000_000
      # Бенчмарк
      results = {
      "f_string_short": timeit.timeit(f_string_short, number=repetitions),
      "format_string_short": timeit.timeit(format_string_short, number=repetitions),
      "f_string_medium": timeit.timeit(f_string_medium, number=repetitions),
      "format_string_medium": timeit.timeit(format_string_medium, number=repetitions),
      "f_string_long": timeit.timeit(f_string_long, number=repetitions),
      "format_string_long": timeit.timeit(format_string_long, number=repetitions),
      }
      print(results)

    • @nikolaypavlin
      @nikolaypavlin  2 หลายเดือนก่อน

      В целом оверхед на логи безусловно есть, но это то, что позволяет отлаживать ход программы + можно гибко настраивать уровни логирования, как в виедо смотрим и в проде выводить только ошибки и ворнинги, а много дебага только у себя локально

    • @ondest5059
      @ondest5059 หลายเดือนก่อน

      @@nikolaypavlin Проблема с f строками достаточно проста, она интерполируется каждый раз даже если не будет записана в лог, а еще в документации прямо написано про отложенную интерполяцию записей в таком стиле logging.info("The value of x is %d", x), в асинхронном коде так и вовсе прикол что по факту записываются слегка неточные логи из за гэпа между реальным созданием f строки и непосредственной записью в ту же ёлку или clickhouse
      Касательно производительности вопрос к памяти в целом, зачем каждый раз создавать объект f строки, если на уровнях выше debug или даже info они будут куда более редкими.
      Это что то типо best practices если я вообще правильно помню.
      В вашей бенчмарке отложенной интерполяции нету да и важно наверно это только где внешние системы логирования аля grafana

  • @maksimvasilyev4684
    @maksimvasilyev4684 2 หลายเดือนก่อน

    Вот вы сказали в самом начале 1.py что это метод, а не функция разве? Я начинающий и хотелось бы понимать..

    • @nikolaypavlin
      @nikolaypavlin  2 หลายเดือนก่อน +1

      @@maksimvasilyev4684 без таймкода сложновато, но концептуально - метод это функция у класса/объекта
      Но это все про формальные обозначения, я бы не назвал это чем-то важным

  • @MrSunTrope
    @MrSunTrope 5 วันที่ผ่านมา

    Залейте пожалуйста на гит

    • @nikolaypavlin
      @nikolaypavlin  2 วันที่ผ่านมา +1

      Лови
      github.com/Afaneor/logging-example