【问题标题】:Django verbose request loggingDjango 详细请求日志记录
【发布时间】:2012-10-08 04:13:22
【问题描述】:

问题与this 大致相同,但是我希望django 将它的详细请求信息记录到我的logging.FileHandler - 即,而不必查看我的网络服务器日志。我尝试设置默认记录器 django.requests 以写入 4xx 和 5xx 以外的内容,但未能成功 向处理程序请求信息。

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

【问题讨论】:

    标签: django logging


    【解决方案1】:

    我不能说我进行了详尽的搜索,但从我在 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 进行成功的请求日志记录......
    • 你应该如何将它集成到 settings.py 中?
    • @GiampaoloRodolà 将其添加到MIDDLEWARE_CLASSES,即MIDDLEWARE_CLASSES += ('myapp.middleware.LoggingMiddleware',),其中上面的类在文件myapp/middleware.py中
    • 这已经过时了。对于 django 1.10,请参阅stackoverflow.com/a/39476411/4744937
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 2017-03-13
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    相关资源
    最近更新 更多