Lets sagen, dass ich wie diese Formatierung Zeichenfolge protokollieren möchten:django Logging Set Kontext global pro Anfrage?
%(levelname)s %(asctime)s %(module)s %(funcName)s %(message)s %(user_id)
Es kann mit dieser Art der Protokollierung Befehl:
logging.error('Error fetching information', extra = { 'user_id': 22 })
Dadurch wird der aktuelle Benutzer-ID in den Logging-Nachrichten für aktuelle Anfrage
Das zusätzliche Diktat muss jedoch zu jedem Protokollierungsaufruf hinzugefügt werden.
Gibt es eine gute Möglichkeit, diesen Kontext in einer gemeinsamen Funktion in django (z. B. Middleware oder Indexfunktion einer Sicht) hinzuzufügen, so dass das zusätzliche Wörterbuch mit Benutzer-ID festgelegt ist und alle weiteren Protokollierungsaufrufe in der aktuellen Bitte melden Sie auch den aktuellen Benutzer an.
Warum ist die Antwort von 'mawimawi' nicht akzeptabel? Liegt es an der thread-lokalen Verwendung oder an etwas anderem? –
Vinay Sajip, einige Rep-Punkte werden alleine sterben. So funktioniert es bei stackoverflow. – mawimawi
@VinaySajip, ja, versucht, die Verwendung von Thread-lokalen und einer zusätzlichen Middleware zu vermeiden. Wenn es eine Möglichkeit gibt, die Protokollierungsklasse zu erweitern, wäre das großartig. – DhruvPathak