log_filters: get user and ip from record if present (#35302)

This commit is contained in:
Benjamin Dauvergne 2019-08-09 12:14:26 +02:00
parent e9897ce3a2
commit 0f17a56202
1 changed files with 15 additions and 11 deletions

View File

@ -29,18 +29,22 @@ class RequestContextFilter(logging.Filter):
Inspired by django-log-request-id
'''
from . import middleware
request = middleware.StoreRequestMiddleware.get_request()
user = self.DEFAULT_USERNAME
ip = self.DEFAULT_IP
request_id = self.DEFAULT_REQUEST_ID
if request is not None:
request = record.request = getattr(record, 'request', middleware.StoreRequestMiddleware.get_request())
if not hasattr(record, 'request_id'):
record.request_id = getattr(request, 'request_id', self.DEFAULT_REQUEST_ID)
if not hasattr(record, 'ip'):
record.ip = self.DEFAULT_IP
if record.request:
record.ip = request.META.get('REMOTE_ADDR', self.DEFAULT_IP)
if not hasattr(record, 'user'):
if hasattr(request, 'user') and request.user.is_authenticated():
user = six.text_type(request.user)
ip = request.META.get('REMOTE_ADDR', self.DEFAULT_IP)
request_id = request.request_id
record.user = user
record.ip = ip
record.request_id = request_id
record.user = six.text_type(request.user)
else:
record.user = self.DEFAULT_USERNAME
return True