Django LOGGING - Как изменить имя атрибута фильтра по формату
У меня следующие настройки:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
},
'some_id': {
'()': 'my.special.filter'
},
},
'formatters': {
'json': {
'()': 'my.special.formatter',
'format': '%(thread)d\t%(message)s'
},
...
фильтр добавляет "some_id" в журнал, так что вывод выглядит следующим образом:
{"thread": 140155333515008, "message": "some log msg", "some_id": "123456"}
Я хочу изменить дополнительный атрибут "some_id", чтобы вывод выглядел следующим образом:
{"thread": 140155333515008, "message": "some log msg", "some-id": "123456"}
Я видел, что это можно сделать с помощью CustomAdapter но у меня много "logger = logging.getLogger(...)", поэтому я не могу использовать это.
Как изменить имя выходного атрибута?
на данный момент решение следующее:
class my.special.formatter(JsonFormatter):
def __init__(self, *args, **kwargs):
super(my.special.formatter, self).__init__(*args, **kwargs)
def format(self, record):
if hasattr(record, 'some_id'):
record.__setattr__('some-id', record.some_id)
record.__delattr__('some_id')
return super(my.special.formatter, self).format(record)
но он не идеален...