Verbessertes Logging #64
No reviewers
Labels
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: kompetenzinventar/ki-backend#64
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "Brain/ki-backend:fix-logging"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Dieser PR sorgt einerseits dafür, dass im production-Modus Logs ausgegeben werden. Gleichzeitig wird ein einheitliches Format für Zeitstempel eingeführt, um das Debugging zu erleichtern.
Zentrale Ursache für das Problem in production war, dass die alembic-Config sämtliche Logger neu konfiguriert hat. Da in dieser Config nichts anderes gesetzt war (und eine leere Logging-Config nicht geht), habe ich die ganze alembic.ini entfernt.
Manche Libraries loggen über den Flask-Logger, andere über einen eigenen, der dann zum root-Logger hoch-bubbled. Um keine Log-Ausgaben zu verpassen, muss also der root-Logger auch einsatzbereit sein. Entsprechend musste für einzelne Logger propagate auf False gesetzt werden, um Dopplungen zu vermeiden.
Fixes kompetenzinventar/ki-doku#27
Fixes kompetenzinventar/ki-doku#42
@ -27,0 +24,4 @@
app.logger.propagate = False # do not forward messages to the root logger
logging.basicConfig(level=loglevel, format='[%(asctime)s] %(levelname)s [%(name)s] %(message)s') # configure root logger as fallback
logging.getLogger('werkzeug').propagate = False # werkzeug has its own ColorStreamHandler
set_library_log_detail_level(BASIC) # ldap3 has different verbosity levels internally
Wäre es eine Idee das hier auf das höchste zu setzen, wenn der
KI_LOGLEVEL
z.B.<= DEBUG
ist?Also kein abgefahrenes Mapping sondern nur eine Stufe und fertig.
Wir hatten ja schon Probleme mit dem LDAP.
Gewissermaßen passiert das schon. ldap3 selbst loggt im Standard nur, wenn der root-Logger auf
DEBUG
steht.Gleichermaßen bedeutet das, dass ldap3 in production nie selbst loggen wird. Das könnte ich aber noch einbauen. Also wenn production, dann soll ldap3 loggen, aber auf Level
ERROR
stattBASIC
.BASIC
ist schon einigermaßen noisy. Die detaillierteren Level gehen dann auf Netzwerk- und Protokollebene, was für den normalen Entwicklungsalltag zu viel sein dürfte. Die sollten vielleicht nur konkret bei der Fehlersuche eingesetzt werden.Cool danke! Ich schau mir das nachher an und würde es dann mergen.
Sieht auf den ersten Blick gut aus.