将请求信息记录到文件中,在内部函数中(Django)

时间:2011-05-01 15:15:27

标签: django logging

我使用简单的记录器将调试信息保存到文件。 我的问题是我希望日志中的每一行都以请求信息为前缀(例如,user,url),并且视图激活的内部函数无权访问请求参数。

我想过

  1. 将请求传递给每个函数 - 非常糟糕
  2. 爬上回溯堆栈,在本地变量中搜索“请求” - 不确定如何执行此操作或是否过慢(例如,每次请求最多记录约100次)
  3. 使用“with”语句围绕视图函数,该语句将所有请求信息保存在全局变量中(key = thread id) - 不建议作为安全风险(http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser )并要求在视图中缩进整个代码
  4. 有优雅的解决方案吗?

2 个答案:

答案 0 :(得分:1)

我相信你想使用一个过滤器来为你的日志消息添加请求属性。这个包似乎解决了这个问题:http://pypi.python.org/pypi/django-requestlogging

答案 1 :(得分:0)

这可能不是您正在寻找的,但django-sentry提供您描述的功能(还有一个漂亮的Web界面)。它可能比尝试推出自己的解决方案更容易。