当我运行Django开发服务器(./manage.py runserver
)所有请求的网址方便地登录到工艺标准输出,配合精确的时间和响应代码:记录所有请求提交的Django
[09/Jun/2016 23:35:53] "GET /api/game/ HTTP/1.1" 404 3185
[09/Jun/2016 23:36:01] "GET /api/game/123/ HTTP/1.1" 404 1735
这是非常方便,因为分析输出时,您可以立即看到该请求相对应的日志信息,例如:
WARNING:2016-06-09 23:41:27,806:views:7449:140139847718656: No such object in the database: u'123'
[09/Jun/2016 23:41:27] "GET /api/game/123/ HTTP/1.1" 404 1735
我使用uwsgi工作+ nginx的,所以我用“控制台”日志处理程序的一切,然后开始uwsgi这样:
exec uwsgi --master --die-on-term --logto /var/log/uwsgi.log
因此,我在/var/log/uwsgi.log
,uwsgi的请求记录和我自己的日志消息中获得了所有必要的日志记录。
现在我想用Apache + mod WSGI + django实现相同的结果。我希望唯一的文件包含来自我的django应用程序的所有请求和所有日志。
我试图用Django的日志记录配置实现这一点,但即使当我将django.requests重定向到同一个文件时,我在日志中只获取自己的消息,根本没有请求。下面是配置的一部分:
'handlers': {
'file_handler': {
'level': DEBUG and 'DEBUG' or 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': join(LOG_DIRECTORY, 'api_log.log'),
'maxBytes': 1024 * 1024 * 5, # 5 MB
'backupCount': 15,
'formatter': 'verbose',
},
},
'loggers': {
'api': {
'handlers': ['file_handler'],
'level': DEBUG and 'DEBUG' or 'INFO',
},
'django': {
'handlers': ['file_handler'],
'level': DEBUG and 'DEBUG' or 'INFO',
},
'django.request': {
'handlers': ['file_handler'],
'level': DEBUG and 'DEBUG' or 'INFO',
},
'django.db.backends': {
'handlers': ['file_handler'],
'level': DEBUG and 'INFO' or 'WARNING',
'propagate': False,
},
}
有没有办法实现的nginx + uwsgi + Django的登录行为与Apache + WSGI + Django的?或者唯一的办法是保持apache access.log和我的日志在单独的文件?
我想在第一种情况下,它是开发服务器谁记录了请求,在第二种情况下,它是uwsgi进程。也许有一种方法可以告诉WSGIDaemonProcess执行相同的操作吗?