繁体   English   中英

Django:关闭控制台 output 的 http 响应消息

[英]Django: Shut off console output of http response messages

因此,我们使用 django 制作了一个应用程序,每次收到请求时,它都会在控制台上打印所有这些 http 响应消息。

[Date String] 'GET /urlpath/..blah blah ' 200 216
[Date String] 'DELETE /anotherurl/..blah blah ' 200 205 
...
..

我们已禁用所有记录器输出。 设置调试=假。 试过'python manage.py runserver --verbosity 0'。 甚至尝试将 sys.stdout 更改为 NullDevice() class。 然而,我们似乎无法关闭这些使服务器缓慢爬行的响应消息。 所有其他消息都被关闭,除了这些。 有什么建议么?

我意识到 django 内部网络服务器仅用于开发而不是用于生产,但我们希望仅使用开发版本本身即可获得相当大的速度(无需 go 进入在 Apache 后面部署 Z2B9AFB89A6ACC15ADZ5B15/99DCA1575B15 的复杂性) .

您可以打开控制台日志记录,但使用这个小补丁您可以抑制嘈杂的线条,例如

GET /urlpath/..blah blah ' 200 216
...

完全,它们都有HTTP 结果代码 = 200。在您的站点包或 VirtualEnv(如果您正在使用它)目录中,go 到文件夹结构 django 服务器

然后转到 Class WSGIRequestHandler , function def log_message (self, format, *args)

# Don't bother logging requests for admin images or the favicon.
if (self.path.startswith(self.admin_media_prefix)
        or self.path == '/favicon.ico'):
    return

插入

# START ----- Don't show page requests which have run successfully
if args[1] == '200':
    return
# END ----- Don't show page requests which have run successfully

这是 Python 2.7.3、Django 1.4.3 的肮脏解决方法,我也对干净的自定义感兴趣:-)

内置的开发服务器不是为性能而设计的,而是使用gunicorn 您可以将其作为应用程序添加到您的 Django 项目中,它将使您可以使用命令run_gunicorn作为runserver的替代方法。 它比内置的开发服务器更快,响应更快。 如果您愿意,您还可以使用--log-level设置 gunicorn 的日志记录级别。 它的部署也相当简单,并且适合生产。

您只需添加 Django 日志记录设置:

    'loggers': {
        # django's default logger
        'django.server': {
            'handlers': ['django.server'],
            'level': 'INFO',
            'propagate': False,
        },
    }

您可以覆盖 Django 的默认记录器: https://github.com/django/django/blob/32265361279b3316f5bce8efa71f2049409461e3/django/utils/log.py#L18

Django 的默认内置记录器如何工作: https://docs.djangoproject.com/en/1.10/topics/logging/#id3

使用自定义 CallbackFilter 过滤器: https://docs.djangoproject.com/en/1.10/topics/logging/#django.utils.log.CallbackFilter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM