Django 详细请求日志记录
Posted
技术标签:
【中文标题】Django 详细请求日志记录【英文标题】:Django verbose request logging 【发布时间】:2012-10-08 04:13:22 【问题描述】:问题与this 大致相同,但是我希望django 将它的详细请求信息记录到我的logging.FileHandler
- 即,而不必查看我的网络服务器日志。我尝试设置默认记录器 django.requests
以写入 4xx 和 5xx 以外的内容,但未能成功
向处理程序请求信息。
所以我在浏览文档并摆弄记录器和级别后得出的结论是 django 实际上并没有制作很多日志语句 - 所以我希望确认 django 不会在内部记录非请求的错误场景。
【问题讨论】:
【参考方案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,请参阅***.com/a/39476411/4744937以上是关于Django 详细请求日志记录的主要内容,如果未能解决你的问题,请参考以下文章