Skip to content

Latest commit

 

History

History
25 lines (23 loc) · 2.98 KB

File metadata and controls

25 lines (23 loc) · 2.98 KB

Задача #42: Настройка логирования в проекте

Описание

  • В корне репозитория есть папка /logs (если её нет, она создастся автоматически), куда пишутся файлы логов.
  • Файл, созданный в текущий день, называется logs. Файлы, созданные в предыдущие дни имеют имя logs.{дата создания файла}. По окончании текущего дня (в 00:00) при попытке записать новый лог файл logs меняет имя на logs.{дата только что минувшего дня, она же - дата создания файла}, и создаётся новый пустой файл с именем logs, куда и будет записан этот новый лог (и все следующие логи наступившего дня).
  • Всего в /logs могут находиться 4 файла: logs и три файла, созданных в предыдущие три дня. Все файлы старше трёх дней уничтожаются.
  • В файл logs пишутся все логи текущего дня уровня WARNING и выше в формате {levelname} - {asctime} - {module} - {message}.
  • В консоль выводятся логи всех уровней в формате {levelname} - {asctime} - {module} - {message}.
  • В /settings/logging.py находится всё, что связано с логами. В частности, там находится функция example_logs() (а также её вызов), которая производит тестовые логи. При первичном старте сервера она выполняется два раза, но далее всё работает как нужно.

Примечание

Предположим, что у нас есть файл logs и запущен сервер. Если при этом сменится день (неважно, естественным путём или ручной сменой даты), после чего произойдёт перезапуск сервера путём autoreload, то файл logs не будет переименован ввиду ошибки по типу: PermissionError: [WinError 32] Процесс не может получить доступ к файлу, так как этот файл занят другим процессом: 'C:\\work\\microservice-python-pp-web\\logs\\logs' -> 'C:\\work\\microservice-python-pp-web\\logs\\logs.2024-08-27'., а также логи перестанут записываться в файл. Скорее всего, это связано с работой файловой системы Windows. При ручном перезапуске сервера ошибок не возникает.