logger: prevent RequestContextFilter multiple execution (#29149)

This commit is contained in:
Benjamin Dauvergne 2020-04-26 11:04:00 +02:00
parent 050dbcb921
commit 8c664bc035
2 changed files with 6 additions and 1 deletions

View File

@ -90,6 +90,7 @@ LOGGING = {
'address': '/dev/log',
'class': 'logging.handlers.SysLogHandler',
'formatter': 'syslog',
'filters': ['request_context'],
},
'syslog_no_filter': {
'level': 'INFO',
@ -113,7 +114,7 @@ LOGGING = {
'when': 'midnight',
'backupCount': 1,
'interval': 1,
'filters': ['debug_log'],
'filters': ['request_context', 'debug_log'],
}
},
'loggers': {

View File

@ -52,6 +52,9 @@ class RequestContextFilter(logging.Filter):
Inspired by django-log-request-id
'''
# prevent multiple execution on the same record
if getattr(record, 'request_context', False):
return True
# lookup request from record then StoreRequestMiddleware
if not hasattr(record, 'request'):
@ -101,6 +104,7 @@ class RequestContextFilter(logging.Filter):
record.user = record.user_email = user.email
if getattr(user, 'username', None):
record.user = record.user_name = user.username
record.request_context = True
return True