Logge alle Anfragen an Django

Wenn ich den Django-Entwicklungsserver starte ./manage.py runserver) alle angeforderten URLs werden bequem mit der genauen Zeit und dem Antwortcode in process stdout angemeldet:

[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

Es ist sehr praktisch, da Sie beim Analysieren der Ausgabe sofort die Anforderung sehen, die Ihren Protokollnachrichten entspricht, zum Beispiel:

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

Ich habe früher mit uwsgi + nginx gearbeitet, also habe ich für alles den 'Konsolen'-Protokollierungs-Handler verwendet und dann uwsgi folgendermaßen gestartet:

exec uwsgi --master --die-on-term --logto /var/log/uwsgi.log

Als Ergebnis habe ich alle notwendigen Anmeldedaten erhalten/var/log/uwsgi.log, uwsgis Anforderungsdatensätze und meine eigenen Protokollmeldungen.

Jetzt möchte ich das gleiche Ergebnis mit Apache + Mod WSGI + Django erzielen. Ich möchte, dass die einzige Datei alle Anfragen und alle Protokolle von meiner Django-App an einem Ort enthält.

Ich habe versucht, dies mit der Django-Protokollierungskonfiguration zu erreichen, aber selbst wenn ich django.requests auf dieselbe Datei umleite, erhalte ich nur meine eigenen Nachrichten in den Protokollen, überhaupt keine Anforderungen. Hier ist der Teil der Konfiguration:

'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,
    },
}

Gibt es eine Möglichkeit, mit Apache + WSGI + Django das Protokollierungsverhalten von Nginx + Uwsgi + Django zu erreichen? Oder ist die einzige Möglichkeit, apache access.log und meine Protokolle in separaten Dateien zu speichern?

Ich denke, im ersten Fall war es der Entwicklungsserver, der die Anforderungen protokollierte, und im zweiten Fall war es der uwsgi-Prozess. Vielleicht gibt es eine Möglichkeit, WSGIDaemonProcess anzuweisen, dasselbe zu tun?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage