Back to snippets
django_structlog_settings_json_logging_middleware_config.py
pythonConfigures 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)