2025, Oct 02 01:15

Как убрать «first seen with mtime» в логах Django runserver

Консоль runserver Django завалена «first seen with mtime»? Узнайте, как настроить логгер django.utils.autoreload на INFO и убрать шум, сохранив автоперезагрузку.

При запуске сервера разработки Django поток сообщений вроде «first seen with mtime …» может буквально захлестнуть терминал. Вывод идёт рывками по мере сканирования шаблонов и модулей Python, из‑за чего трудно заметить реальные ошибки или важные сведения о старте. Хорошая новость: это не внешний наблюдатель и не загадочная фоновая задача — источник в вашей конфигурации логирования автоперезагрузчика Django.

Как это выглядит

Проблема проявляется сразу после запуска dev‑сервера:

python manage.py runserver

Далее консоль заполняется строками наподобие следующих:

File C:\Users\PC\OneDrive\Documents\DoseSaaS\DoseV3MasterSaaS\templates\admin\dose\tenant\change_list.html
    first seen with mtime 1754471094.0

Таких записей могут быть десятки или даже сотни, и полезные сообщения в них тонут.

Почему так происходит

Шумный вывод генерирует логгер, связанный с внутренней подсистемой автоперезагрузки Django. Она отслеживает изменения в файлах и перезапускает сервер во время разработки. Если для логгера задан слишком подробный уровень, он будет выводить строку на каждый отслеживаемый файл, включая «first seen with mtime …», пока терминал не станет практически непригоден. Это не вызвано сторонними наблюдателями и не указывает на проблему в самом Django; причина — в том, как в настройках задан логгер django.utils.autoreload.

Решение

Снизьте уровень логирования для логгера django.utils.autoreload в settings.py, чтобы он не засорял консоль. Значения INFO достаточно, чтобы скрыть перечень файлов и при этом оставить важные сообщения. Добавьте или обновите конфигурацию логгера следующим образом:

LOGGING = {
    ...
    "django.utils.autoreload": {
        "level": "INFO",
        # ... другие параметры логгера, если есть
    },
    ...
}

После изменения перезапустите сервер разработки. Автоперезагрузка продолжит работать, но терминал больше не будет заполняться сообщениями вида «first seen with mtime …».

Почему это важно

Чрезмерно болтливые логи скрывают главное, что важно в процессе разработки: ошибки запуска, предупреждения и релевантные отладочные сообщения. Понимание того, что эти строки идут от django.utils.autoreload, позволяет убрать шум в источнике, не отключая полезные функции вроде автоматической перезагрузки и не пряча консоль целиком.

Вывод

Если при runserver терминал заполняется сообщениями о сканировании файлов, в первую очередь проверьте конфигурацию логирования. Настройка уровня для django.utils.autoreload на INFO сохраняет работу автоперезагрузки и возвращает читаемую консоль. Держите логи точечными и соразмерными, чтобы обратная связь в разработке оставалась быстрой и прозрачной.

Статья основана на вопросе на StackOverflow от Ali Vleotsky и ответе от Selcuk.