Ich versuche, die Django-Protokollierung für die Protokollierung von Warnmeldungen zu konfigurieren. Normalerweise hätte ich keinen Formatierer wie diesen oder gebe ihn an die Konsole aus, nur um zu testen und zu zeigen, dass er nicht funktioniert.Warnungen in Django protokollieren: Filter gibt nichts zurück
Hier ist mein Code: "Das funktioniert"
def is_deprecated(record):
if record.exc_info:
exc_type, exc_value = record.exc_info[:2]
print(exc_value)
if isinstance(exc_value, DeprecationWarning) or isinstance(exc_value, PendingDeprecationWarning):
return True
return False
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'stuff': {
'format': 'This works!'
}
},
'filters': {
'is_deprecated': {
'()': 'django.utils.log.CallbackFilter',
'callback': is_deprecated,
},
},
'handlers': {
'console': {
'filters': ['is_deprecated'],
'class': 'logging.StreamHandler',
'formatter': 'stuff',
},
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'INFO',
},
},
}
Es Ausgabe sollte Wenn es eine Verwarnungswarnung trifft, wird dies jedoch nicht der Fall sein. Ich arbeite mit Python mit diesen Warnungen auf
Python -wd
So kann ich die regelmäßige Django Alarm sehen, aber ich kann nicht den Logger bekommen, um sie zu erkennen.
Auf dieses wird simple die äquivalente Ausnahme ausgelöst. Wenn Sie dies nicht möchten, können Sie dieser Lösung folgen, um die Warnungen mit Djangos Protokollierung im Hintergrund zu verarbeiten. https://stackoverflow.com/questions/40752766/how-to-log-python-warnings-in-a-django-log -Datei – Chaos