【问题标题】:Django Development Logging HttpResponses to dev serverDjango开发记录HttpResponses到开发服务器
【发布时间】:2012-03-24 07:05:45
【问题描述】:

我正在使用 Django 创建一个 API。每个视图都以 JSON 格式响应。我想将每个 HttpResponse JSON 记录到开发服务器的输出中。

到目前为止,我已经添加了一个处理程序:

 'console': {
        'level':'DEBUG',
        'class':'logging.StreamHandler',
 }   

然后添加了一个记录器:

'to_console': {
        'handlers': ['console'],
        'level': 'DEBUG',
    }   

在我看来,我得到了记录器logger = logging.getLogger('to_console')

对于每个 json 响应 logger.debug(json_str)

对于第一个视图,这很好。但我想知道当我将应用程序部署到生产环境时是否可以关闭调试。看起来https://docs.djangoproject.com/en/dev/topics/logging/#django.utils.log.RequireDebugFalse 可以工作。但这导致我的代码中充斥着这些日志语句。我从来不需要记录这样的事情,所以我想知道最易于维护的处理方式是什么。

处理开发日志的正确方法是什么,以便在生产代码时“关闭”它?或者是否有某种我缺少的内置功能或应用程序可以自动将所有 HttpResponse 记录到开发服务器?

【问题讨论】:

    标签: python django logging


    【解决方案1】:

    可以通过更改您提供给日志记录的配置来关闭和打开日志记录功能。您可能会认为日志记录语句会“乱扔”您的代码,但是一旦服务器在生产环境中运行,您(通常)除了日志记录之外几乎没有办法知道内部发生了什么。

    如有必要,您可以向正在运行的服务器发送一个包含新配置的 JSON 数据的 POST,然后由处理 POST 请求的视图生效。但建议保留日志记录语句,因为当日志记录级别达到实际上没有任何输出时它们非常便宜(如您所料,写入控制台/文件/套接字等的实际 I/O 占用了大部分时间)时间,但如果级别设置得足够高,则实际上很少或没有输出)。

    当一切在开发和测试中运行良好但在生产中莫名其妙地失败时,日志记录有时可能是唯一可用的诊断工具。

    我认为 RequireDebugFalse 的使用对于您描述的场景来说是相当合理的,但您也可以编写自己的过滤器,它更适合您的特定需求(编写过滤器很容易做到)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多