因此我们使用django创建了一个应用程序,并在每次获取请求时在控制台上打印所有这些http响应消息。
[Date String] 'GET /urlpath/..blah blah ' 200 216
[Date String] 'DELETE /anotherurl/..blah blah ' 200 205
...
..
我们已禁用所有记录器输出。设置Debug = False。试过'python manage.py runserver --verbosity 0'。甚至尝试将sys.stdout更改为NullDevice()类。然而,我们似乎无法关闭这些响应消息,这些消息正在减慢服务器的速度。所有其他消息都会被关闭,除了这些消息。有什么建议?
我意识到django内部网络服务器仅用于开发,而不是用于生产,但我们希望通过开发版本本身获得相当快的速度(无需进入在Apache之后部署django的复杂性) / lighttpd的)。
答案 0 :(得分:2)
内置开发服务器不是为性能而设计的,而是使用gunicorn
。您可以将其作为应用程序添加到Django项目中,它将为您提供run_gunicorn
命令,作为runserver
的替代方案。它比内置开发服务器更快,响应更快。如果您愿意,还可以使用--log-level
设置gunicorn的日志记录级别。部署起来也相当简单,适合生产。
答案 1 :(得分:1)
您可以让控制台日志记录开启,但是使用这个小补丁你可以抑制像
这样的噪音线GET /urlpath/..blah blah ' 200 216
...
完全,所有的HTTP结果代码= 200。 在您的Site-packages或VirtualEnv(如果您正在使用它)目录中,转到文件夹结构django / core / servers / basehttp.py
然后转到 类 WSGIRequestHandler , 函数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来说,这是一个肮脏的解决方法,我对干净的自定义感兴趣,还: - )
答案 2 :(得分:1)
您只需要添加到 Django 日志记录设置中即可:
main
您可以覆盖 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