Автоматически добавлять текст к каждому сообщению - PullRequest
2 голосов
/ 13 сентября 2011

Приложение, над которым я работаю, использует модуль ведения журнала для регистрации ошибок и т. Д. В таком случае было бы неплохо иметь возможность включить HTTP-реферер, аргументы GET / POST и т. Д. В запись журнала.

Хотя можно было бы добавить его к сообщению перед вызовом .error() и т. Д., Я ищу способ сделать это в центральном месте (конечно, без обертывания этих функций).

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Я никогда не пробовал, но я думаю, что вы можете сделать это, указав FORMAT с logging.basicConfig.

Из документации logging:

FORMAT = "%(asctime)-15s %(clientip)s %(user)-8s %(message)s"
logging.basicConfig(format=FORMAT)
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logging.warning("Protocol problem: %s", "connection reset", extra=d)

напечатает что-то вроде:

2006-02-08 22: 20: 02,165 192.168.0.1 fbloggs Проблема с протоколом: сброс соединения

0 голосов
/ 28 сентября 2011

Я теперь решил это с помощью пользовательского форматера:

class IndicoMailFormatter(logging.Formatter):
    def format(self, record):
        s = super(IndicoMailFormatter, self).format(record)
        return s + self._getRequestInfo()

    def _getRequestInfo(self):
        info = ['Additional information:']
        # ...
        return '\n\n%s' % '\n'.join(info)

Этот форматер может быть легко установлен с помощью опции class в logging.conf (или через код Python).

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