Server-Log
Adresse: /einstellungen/server-log · Recht: Systemeinstellungen verwalten
(settings.manage)
Das Server-Log ist die technische Mitschrift der Anwendung. Es liegt bei der Installation – im Container unter Logs – und hilft, einer Störung auf den Grund zu gehen.
Das Protokoll beantwortet „wer hat was geändert" und richtet sich an den Verein. Das Server-Log beantwortet „warum funktioniert etwas nicht" und richtet sich an die Fehlersuche.
Ausführlichkeit
Sechs Stufen, von sparsam nach gesprächig. Jede Stufe zeigt auch alles Gröbere – das ist die Regel, ohne die die Auswahl nicht zu verstehen ist:
| Stufe | Was zusätzlich mitgeschrieben wird |
|---|---|
| Nur Fehler | Ausschließlich das, was kaputt ist |
| Fehler und Auffälligkeiten | Abgewiesene Zugriffe, Drosselungen, fehlende Migrationen |
| Wichtige Ereignisse | Anmeldungen, Änderungen, Mailversand und die Tagesläufe |
| Ereignisse und Aufrufe | Eine Zeile je Aufruf. Der empfohlene Normalbetrieb. |
| Ausführlich (Fehlersuche) | Zwischenschritte und Zeitmessungen |
| Alles (sehr viel) | Datenbankabfragen und Inhalte von Anfragen. Nur kurzzeitig. |
Die Auswahl Standard der Installation überlässt die Entscheidung dem Wert aus der Umgebung – im Normalfall Ereignisse und Aufrufe.
Änderungen gelten sofort nach dem Speichern, ohne Neustart, und überstehen einen Neustart. Unten auf der Seite steht, was gerade wirksam ist.
Auf diesen Stufen entstehen sehr viele Zeilen. Alles schreibt zusätzlich Datenbankabfragen und Inhalte von Anfragen mit: Passwörter, Zugangsschlüssel und IBANs werden dabei zwar unkenntlich gemacht, andere Personendaten aber nicht. Nach der Fehlersuche also wieder herunterdrehen.
Ausnahmen für einzelne Bereiche
Statt das ganze Log zu fluten, lässt sich gezielt ein Bereich aufdrehen – etwa nur der Mailversand, wenn eine Mail nicht ankommt.
- Unter Bereich hinzufügen den Bereich wählen und auf Hinzufügen klicken.
- Rechts daneben die Stufe für genau diesen Bereich setzen.
- Speichern.
Entfernen nimmt die Ausnahme wieder zurück; der Bereich folgt danach wieder der Einstellung oben. Bereiche ohne Eintrag folgen ihr ohnehin.
Zur Auswahl stehen unter anderem:
| Bereich | Was darin steht |
|---|---|
| Anfragen (HTTP) | Eine Zeile je Aufruf: Pfad, Status, Dauer, Benutzer |
| Datenbank | Abfragen, langsame Abfragen, Verbindungspool |
| Anmeldung, Zweiter Faktor, SSO (Nextcloud) | An- und Abmelden, Sitzungen, verweigerte Zugriffe |
| Änderungen | Dasselbe wie im Protokoll, zusätzlich technisch |
| Mails, Automatische Mails, Mailversand (SMTP) | Versand mit der Antwort des Mailservers |
| Tagesläufe | Warteliste, Löschlauf, Erinnerungen – mit Dauer und Ergebnis |
| Kontoauszug-Import, Belegerkennung | Sammel-Import und Texterkennung |
| Dateispeicher | Jeder Zugriff auf Nextcloud bzw. den lokalen Speicher |
| Schnittstelle (API) | Zugriffe externer Werkzeuge, abgelehnte Schlüssel, Drosselung |
| Support-Zugang | Start und Ende von Support-Sitzungen |
Was im Log steht
- Zeitstempel und Stufe je Zeile.
- Eine Kennung je Aufruf, die alle Zeilen desselben Vorgangs mitträgt – bis hinunter
in Datenbank und Mailversand. Sie steht auch in der Antwort an den Browser
(
X-Request-Id), lässt sich also aus einer Fehlermeldung heraus suchen. - Passwörter, Token, Schlüssel und IBANs werden beim Schreiben unkenntlich gemacht. Inhalte von Anfragen erscheinen nur auf der Stufe Alles, und dort gekürzt. Das gilt auch für Freigabe-Token in der Adresse – etwa der Link einer geteilten Packliste. Öffentlich bekannte Kennungen wie der Slug einer Anmeldeseite bleiben lesbar.
- Die Startzeile nennt die erkannte Zeitzone und die Uhrzeiten der Tagesläufe. Ohne diese Angabe ist eine verschobene Zeitanzeige kaum aufzuklären.
Wenn die Einstellung noch nicht verfügbar ist
Direkt nach einem Update kann ein Hinweis stehen, dass die nötige Datenbank-Änderung noch nicht eingespielt ist. Bis dahin gilt der Wert aus der Umgebung – nach dem nächsten Start ist die Einstellung hier verfügbar.
Was in der Umgebung bleibt
Ein paar Dinge sind Betriebs-Entscheidungen, die einmal getroffen und dann nie wieder angefasst werden. Sie stehen weiterhin in den Umgebungsvariablen des Containers:
| Variable | Zweck |
|---|---|
LOG_LEVEL | Standardstufe, solange hier nichts eingestellt ist |
LOG_FORMAT=json | Maschinenlesbare Ausgabe für Log-Sammler |
LOG_FILE, LOG_FILE_MAX_MB, LOG_FILE_KEEP | Zusätzliche Logdatei mit Rotation |
LOG_SLOW_REQUEST_MS, LOG_SLOW_QUERY_MS | Ab wann ein Aufruf bzw. eine Abfrage als langsam gilt |
LOG_LEVEL bleibt außerdem der Notnagel für die zwei Fälle, in denen es keine
Einstellung geben kann: die Startphase vor der ersten Datenbankverbindung und eine
Instanz, deren Datenbank nicht erreichbar ist. Sonst wären ausgerechnet der
Migrationslauf und ein „Datenbank weg" nicht protokollierbar. Sobald die Einstellung
geladen ist, gewinnt sie.
Hat dies deine Frage beantwortet?