/ / Logging-Anforderungs-Info in Datei, in inneren Funktionen (Django)

Logging Anfrage Info zu Datei, in inneren Funktionen (Django) - Django, Protokollierung

Ich verwende einfachen Logger, um Debug-Informationen in zu speichernDatei. Mein Problem ist, ich möchte, dass jeder Zeile im Protokoll Anforderungsinformationen vorangestellt werden (z. B. Benutzer, URL), und die von der Ansicht aktivierten inneren Funktionen haben keinen Zugriff auf den Anforderungsparameter.

Ich habe darüber nachgedacht

  1. Anfrage an jede Funktion weiterleiten - sehr schlecht
  2. Den Traceback-Stack hochklettern, in lokalen Variablen nach "request" suchen - Sie sind sich nicht sicher, ob dies zu langsam ist oder ob es zu langsam ist (beispielsweise bis zu 100 Mal pro Anfrage protokollieren).
  3. die View-Funktion mit einem "mit" umgebenEine Anweisung, die alle Anforderungsinformationen in einer globalen Variablen enthält (Schlüssel = Thread-ID) - nicht als Sicherheitsrisiko empfohlen (http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser) und erfordert, dass der gesamte Code in der Ansicht eingerückt wird

Gibt es eine elegante Lösung?

Antworten:

1 für die Antwort № 1

Ich glaube, Sie möchten einen Filter verwenden, der Ihren Protokollmeldungen Anforderungsattribute hinzufügt. Dieses Paket scheint das zu beheben: http://pypi.python.org/pypi/django-requestlogging


0 für die Antwort № 2

Dies ist möglicherweise nicht genau das, wonach Sie suchen, aber Django-Sentry stellt die Funktionalität bereit, die Sie beschreiben (auch mit einer schönen Weboberfläche). Es könnte einfacher sein, als zu versuchen, Ihre eigene Lösung zu rollen.