2025, Oct 02 01:00
Silence Django runserver 'first seen with mtime' spam by setting django.utils.autoreload logging to INFO
Is your Django runserver flooded with 'first seen with mtime' messages? Learn how to stop the noise by setting django.utils.autoreload logging level to INFO.
When running a Django development server, an unexpected flood of messages like “first seen with mtime …” can swamp the terminal. The output comes in bursts as templates and Python modules are scanned, making it hard to see real errors or startup information. The good news: this isn’t an external watcher or a mysterious background task — it’s your logging configuration for Django’s autoreloader.
What the problem looks like
The issue surfaces as soon as you start the dev server:
python manage.py runserverThe console then fills with entries resembling the following:
File C:\Users\PC\OneDrive\Documents\DoseSaaS\DoseV3MasterSaaS\templates\admin\dose\tenant\change_list.html
    first seen with mtime 1754471094.0Dozens or hundreds of these lines can appear, drowning useful messages.
Why this happens
The noisy output is produced by the logger associated with Django’s internal autoreload subsystem. This subsystem is responsible for detecting file changes and reloading the server during development. If the logger is configured too verbosely, it will emit a line for each watched file, including the “first seen with mtime …” entries, until your terminal is effectively unusable. It’s not caused by third‑party watchers and doesn’t indicate a problem in Django itself; it is a consequence of how the logger for django.utils.autoreload is set up in your settings.
The fix
Adjust the logging level for the django.utils.autoreload logger in settings.py so it doesn’t spam the console. Setting it to INFO is sufficient to quiet the file enumeration while keeping relevant messages visible. Add or update the logger configuration accordingly:
LOGGING = {
    ...
    "django.utils.autoreload": {
        "level": "INFO",
        # ... other logger options if present
    },
    ...
}After this change, restart the development server. The autoreloader will continue to work, but the terminal will no longer be filled with the “first seen with mtime …” output.
Why it’s important to know
Excessively chatty logging obscures the signal you actually care about during development: startup errors, warnings, and relevant debug messages. Understanding that these messages come from django.utils.autoreload helps you control the noise at the source, without disabling useful features like automatic reload or hiding the console entirely.
Bottom line
If your terminal is flooded with file scan entries on runserver, look at your logging setup first. Tuning the level for django.utils.autoreload to INFO keeps autoreload functional while restoring a readable console. Keep logging targeted and right‑sized so the development feedback loop stays fast and clear.
The article is based on a question from StackOverflow by Ali Vleotsky and an answer by Selcuk.