Как Django может использовать журнал для ведения журнала с использованием пользовательских атрибутов в форматировании? Я имею в виду, например, регистрировать зарегистрированное имя пользователя.
В settings.py
script определена переменная LOGGING:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
},
},
'formatters' : {
'info_format' : {
'format' : '%(asctime)s %(levelname)s - %(message)s',
},
}
}
Я хочу использовать формат, что-то вроде:
'format' : '%(asctime).19s %(levelname)s - %(username)s: %(message)s'
Где имя пользователя будет в настоящее время зарегистрированным пользователем. Возможно, здесь могут быть добавлены любые другие переменные сеанса.
Обходной путь здесь заключается в использовании параметра extra
для методов журнала, который получает словарь с ключами в качестве строк, которые я хочу использовать в строке формата:
logger.info(message, extra={'username' : request.user.username})
Другим (уродливым) решением будет создание атрибута message для включения тех вещей, которые не являются частью атрибутов по умолчанию, которые имеют записи в форматах.
message = request.user.username + " - " + message
logger.info(message)
Но есть ли способ настроить строку форматирования с определенными атрибутами и заставить Django автоматически передавать их в API ведения журнала? Если, например,% (имя пользователя), имя request.user.username, любого другого...