小编use*_*853的帖子

在自定义Django日志记录处理程序中检索请求对象

我有一个自定义日志处理程序,我想处理所有日志消息级别(INFO,WARN,DEBUG,ERROR等)并将其发送到数据分析服务器.对于每条消息,数据将包括记录和原始请求对象上的字段.

问题是我没有看到附加到任何记录的请求对象.我在官方文档中发现只有django.request消息将请求对象附加到记录中,但没有提到具体的django.request消息.(https://docs.djangoproject.com/en/1.9/topics/logging/#django-request).

什么是django.request消息?他们如何/何时开除?如何重新路由每个日志消息以在其上包含请求对象,以便我的处理程序可以附加将发送到代理服务器的数据?

---- ----处理

class LogHandler(logging.Handler):
    request = None

    def __init__(self, request=None):
        logging.Handler.__init__(self)

    def parse_record_to_json(self, record):
        import json

        created = datetime.datetime.fromtimestamp(record.created)
        return {
            'timestamp': created.strftime('%m/%d/%Y %H:%M:%S'),
            'method': record.funcName,
            'level': record.levelname,
            'line': record.lineno,
            'module': record.module,
            'message': record.getMessage(),
            'path': record.pathname,
        }

    def emit(self, record):
        user_id = None
        try:
            self.request = record.request
            if self.request.user.is_authenticated():
                user_id = self.request.user.id
        except:
            print "this must not be a django.request message"
            self.request = None

        from .event import SendEvent
        json_record = self.parse_record_to_json(record)
        level = json_record.pop('level', None) …
Run Code Online (Sandbox Code Playgroud)

python django logging request

7
推荐指数
1
解决办法
1036
查看次数

标签 统计

django ×1

logging ×1

python ×1

request ×1