當我運行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執行相同的操作嗎?