Setup#
1. Installed apps#
Add django_user_trace
to your INSTALLED_APPS
Django setting:
INSTALLED_APPS = [
# ...
"django_user_trace", # https://github.com/axieum/django-user-trace
]
2. Middleware#
Add django_user_trace.middleware.django_user_trace_middleware
to your MIDDLEWARE
Django setting:
MIDDLEWARE = [
# ...
"django.contrib.auth.middleware.AuthenticationMiddleware",#(1)!
"django_user_trace.middleware.django_user_trace_middleware",
# ...
]
-
django-user-trace
uses middleware to capture user attributes from each request'srequest.user
attribute. To do this, the middleware must be placed after Django'sAuthenticationMiddleware
!
3. Logging#
Add django_user_trace.log.DjangoUserAttrs
as a filter to your LOGGING
Django setting, apply the filter to handler/s, and add the new username
field to any formatters:
LOGGING = {
# ...
"filters": {
# ...
"user_attrs": {"()": "django_user_trace.log.DjangoUserAttrs"},#(1)!
},
"formatters": {
# ...
"verbose": {
"format": "%(levelname)s %(asctime)s %(username)s %(message)s",#(2)!
},
},
"handlers": {
# ...
"console": {
"class": "logging.StreamHandler",
"formatter": "verbose",
"filters": ["user_attrs"],#(3)!
},
},
}
- This Python logging filter injects any configured user attributes to every log record.
- Add any configured user attributes here,
username
is available by default. - We apply the new
user_attrs
filter that we defined above here.
3.1 Internal logs optional#
To view internal logs made by django-user-trace
for debugging purposes, add the django_user_trace
logger to your LOGGING
Django setting:
LOGGING = {
# ...
"loggers": {
"django_user_trace": {
"handlers": ["console"],
"level": "WARNING",#(1)!
"propagate": False,
},
},
}
- It's recommended to not log any lower than
WARNING
in production, as doing so will lead to extra log messages per request — these add up over time.
Last update: 2023-03-28
Created: 2023-02-11
Created: 2023-02-11