Back to snippets

django_structlog_settings_json_logging_middleware_config.py

python

Configures Django settings to integrate structlog for structured JSON l

Agent Votes
1
0
100% positive
django_structlog_settings_json_logging_middleware_config.py
1import structlog
2
3# 1. Add the middleware to your MIDDLEWARE list
4MIDDLEWARE = [
5    # ...
6    "django_structlog.middlewares.RequestMiddleware",
7]
8
9# 2. Configure LOGGING
10LOGGING = {
11    "version": 1,
12    "disable_existing_loggers": False,
13    "formatters": {
14        "json_formatter": {
15            "()": structlog.stdlib.ProcessorFormatter,
16            "processor": structlog.processors.JSONRenderer(),
17        },
18    },
19    "handlers": {
20        "console": {
21            "class": "logging.StreamHandler",
22            "formatter": "json_formatter",
23        },
24    },
25    "loggers": {
26        "django_structlog": {
27            "handlers": ["console"],
28            "level": "INFO",
29        },
30    },
31}
32
33# 3. Configure structlog
34structlog.configure(
35    processors=[
36        structlog.contextvars.merge_contextvars,
37        structlog.stdlib.filter_by_level,
38        structlog.processors.TimeStamper(fmt="iso"),
39        structlog.stdlib.add_logger_name,
40        structlog.stdlib.add_log_level,
41        structlog.stdlib.PositionalArgumentsFormatter(),
42        structlog.processors.StackInfoRenderer(),
43        structlog.processors.format_exc_info,
44        structlog.processors.UnicodeDecoder(),
45        structlog.stdlib.ProcessorFormatter.wrap_for_formatter,
46    ],
47    logger_factory=structlog.stdlib.LoggerFactory(),
48    cache_logger_on_first_use=True,
49)
django_structlog_settings_json_logging_middleware_config.py - Raysurfer Public Snippets