Я хотел бы добавить следующее для каждой записи в журнале:
user
request_method
status
Единственный способ, которым я видел, чтобы сделать это, это немного хакерский способ, который состоит в том, чтобы пройтиих как args
, потому что они подобраны форматтером django (я не вижу места, где можно передать kwargs - https://docs.python.org/3/library/logging.html#formatter-objects). Вот пример:
log.info("hi", {"user": str(request.user)})
Иследующий форматтер:
'format': '{"message": "%(message)s", "extra": "%(args)s"}',
Когда я анализирую журнал, я делаю что-то вроде этого:
info = {
'message': message
}
data = ast.literal_eval(extra)
for k,v in extra.items():
info[k] = v
Это выглядит довольно гетто - есть ли лучший способ сделать это, например,способ получить kwargs в форматере? Когда я пытаюсь сделать что-то вроде:
log.info("hi", extra = {"user": str(request.user)})
Это либо ошибка, либо не проходит в args
(очевидно).