Как добавить кучу значений по умолчанию для регистрации в Python / Django - PullRequest
0 голосов
/ 14 ноября 2018

Я хотел бы добавить следующее для каждой записи в журнале:

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 (очевидно).

1 Ответ

0 голосов
/ 14 ноября 2018

Я бы сделал это, связав запрос с текущим потоком выполнения.Вот пример того, как это сделать:

https://nedbatchelder.com/blog/201008/global_django_requests.html

Затем вы можете использовать get_request() в своем обработчике регистрации, чтобы получить запрос, из которого вы можете получить пользователя.(Я не уверен, что вы подразумеваете под "статусом")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...