[英]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.