Django 详细请求日志记录

标签 django logging

问题与 this 非常相似,但是我希望 django 将其详细请求信息记录到我的 logging.FileHandler - 即,而不必查看我的网络服务器日志。我尝试过设置默认记录器 django.requests 来写入 4xx 和 5xx 以外的内容,但失败了 向处理程序请求信息。

因此,在浏览文档并摆弄记录器和级别后我得出的结论是,django 实际上并没有生成大量日志语句 - 所以我希望确认 django 不会在内部记录非请求的错误场景。

最佳答案

我不能说我进行了详尽的搜索,但从我在 django 1.4.1 的 django/core/handlers/base.py 中看到的内容来看,django.request 记录器确实仅用于警告和错误条件(4xx/5xx)。

也就是说,编写可以为您完成各种日志记录的中间件是很简单的。让您开始的非常简单的事情可能就是:

from time import time
from logging import getLogger

class LoggingMiddleware(object):
    def __init__(self):
        # arguably poor taste to use django's logger
        self.logger = getLogger('django.request')

    def process_request(self, request):
        request.timer = time()
        return None

    def process_response(self, request, response):
        self.logger.info(
            '[%s] %s (%.1fs)',
            response.status_code,
            request.get_full_path(),
            time() - request.timer
        )
        return response

关于Django 详细请求日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12942195/

相关文章:

django - 实现 djangorestframework-simplejwt 无密码 token 认证

Django 管理更改列表优化查询 : select field1, field2 而不是选择 *

django - 使用 Django 中的上下文处理器访问 View 中的全局变量

django - 将客户端 IP 信息添加到 Django 记录器中

Python。为类实例启用日志记录,从单独的模块导入

python - 自动将 Flask 的消息记录到记录器

python - 在Python中继承记录器名称

java - 将 Apache Commons HttpClient 日志调整为 Dropwizard

python - Django pytest 断言错误 : should return body unicode

django - 设置uwsgi和nginx时,我必须自己创建套接字文件吗?