Filter Logs by Level

A snippet showing how to filter logs by level in Django.


# settings.py

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "filters": {
        "only_warnings_and_above": {
            "()": "django.utils.log.CallbackFilter",
            "callback": lambda record: record.levelno >= 30,  # WARNING and above
        }
    },
    "handlers": {
        "console_warn": {
            "class": "logging.StreamHandler",
            "filters": ["only_warnings_and_above"],
        },
    },
    "root": {"handlers": ["console_warn"], "level": "DEBUG"},
}
      

# example in a view
from django.http import HttpResponse
import logging
logger = logging.getLogger(__name__)

def my_view(request):
    logger.debug("This will NOT appear")
    logger.warning("This WILL appear")
    return HttpResponse("Hello, world!")
      
Explanation:
  • Filters run after the logger level check; use them to fine-tune output per handler.
  • Only WARNING/ERROR/CRITICAL messages are printed to the console.
  • Category Logging
  • Total Views 514
  • Last Modified 20 July, 2026
  • Tags #logging #filter #level #debug
Never miss a story on Django.wiki

Subscribe for fresh tutorials, snippets, and updates.

By subscribing you agree to our Privacy Policy.