-
Notifications
You must be signed in to change notification settings - Fork 82
Description
I'm trying to avoid logging the login request for the default django admin site, since it contains a password in the request body. Is there a way to apply the no_logging decorator to an arbitrary view?
I tried manually setting the NO_LOGGING_ATTR on django.contrib.admin.sites.login (source) which is passed as the view/func to _should_log_route like so:
from django.contrib.admin.sites import site
from request_logging.middleware import NO_LOGGING_ATTR, NO_LOGGING_MSG_ATTR
def no_log_admin_login():
setattr(site.login, NO_LOGGING_ATTR, True)
setattr(site.login, NO_LOGGING_MSG_ATTR, "Admin login view contains password")
but this fails with AttributeError: 'method' object has no attribute 'no_logging'
Given how invasive this kind of patch is in general, I'm not sure I'd be happy even if I could get it to work...
So, I was wondering if you would be open to a new setting like REQUEST_LOGGING_SKIP_ROUTES which would contain a list of routes like ['/admin/login/', '/api/sensitive/'], which could be checked in _should_log_route in addition to the NO_LOGGING_ATTR. I feel this would be useful in general for controlling how logging is done for third party views/apps