Ich versuche, eine Variable zu meiner Protokollzeile über meine settings.py-Datei hinzuzufügen. Django: Variable an Protokolldatei in Einstellungsdatei übergeben
Dies ist der Code in den Einstellungen (das Logging Teil):
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'mail_admins': {
'level': 'CRITICAL',
'class': 'django.utils.log.AdminEmailHandler'
},
'customhandler':{
'level':'DEBUG',
'class':'logging.RotatingFileHandler',
'formatter':'custom_format',
'filename':LOG_LOCATION
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'CRITICAL',
'propagate': True,
},
'Logger_Custom1': {
'handlers':['customhandler'],
'level':'DEBUG',
'propagate':True
},
},
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
'custom_format':{
'format':'[%(asctime)s %(levelname)s T:%(threadName)s F:%(funcName)s ] %(message)s '
},
}
}
Der obige Code funktioniert gut, aber jetzt würde ich jede Lognachricht wie am Ende eine Variable haben. Etwas wie:
MyVariable = "Somelines"
[%(asctime)s %(levelname)s T:%(threadName)s F:%(funcName)s ] %(message)s 'MyVariable
So würde mein Protokoll den Inhalt dieser Variablen am Ende jeder Protokollierungszeile haben. Ich weiß, dass wir das innerhalb der View-Funktion wie folgt tun können: logging.warning('% before you %','Look','Leap')
Aber das erfordert, dass wir diese Zeile überall getrennt hinzufügen. Wenn wir diesen Variablennamen hinzufügen oder ändern müssen, müssen wir diese Zeile überall in jeder Datei ändern.
Also ich frage mich, ob es eine Möglichkeit gibt, dies direkt von settings.py zu tun, so dass wir eine Änderung vornehmen können und es wird für alle Protokollierungsnachrichten gelten.
ich einen Platz am Ende der Formatierungsstring (nur nach '% (Nachricht) s') hinzugefügt, kann es auch in Ihrem aktuellen Code als hilfreich erweisen! Auf diese Weise wird zwischen der Django-Protokollnachricht und Ihrer benutzerdefinierten Nachricht ein Leerzeichen angezeigt. Beachten Sie auch, dass dies nur so lange funktioniert, wie 'testvar' eine Zeichenkette ist! Sie können es ein wenig robuster machen, indem Sie es mit der Zeichenfolgenfunktion einbinden, d. H. 'Str (testvar)'. – Hannele
Hey, das sind tolle Tipps ...... Danke ... –