Zum Hauptinhalt springen

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.

Nicht zu verwechseln mit dem Protokoll

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:

StufeWas zusätzlich mitgeschrieben wird
Nur FehlerAusschließlich das, was kaputt ist
Fehler und AuffälligkeitenAbgewiesene Zugriffe, Drosselungen, fehlende Migrationen
Wichtige EreignisseAnmeldungen, Änderungen, Mailversand und die Tagesläufe
Ereignisse und AufrufeEine 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.

„Ausführlich" und „Alles" wieder zurückstellen

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.

  1. Unter Bereich hinzufügen den Bereich wählen und auf Hinzufügen klicken.
  2. Rechts daneben die Stufe für genau diesen Bereich setzen.
  3. 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:

BereichWas darin steht
Anfragen (HTTP)Eine Zeile je Aufruf: Pfad, Status, Dauer, Benutzer
DatenbankAbfragen, langsame Abfragen, Verbindungspool
Anmeldung, Zweiter Faktor, SSO (Nextcloud)An- und Abmelden, Sitzungen, verweigerte Zugriffe
ÄnderungenDasselbe wie im Protokoll, zusätzlich technisch
Mails, Automatische Mails, Mailversand (SMTP)Versand mit der Antwort des Mailservers
TagesläufeWarteliste, Löschlauf, Erinnerungen – mit Dauer und Ergebnis
Kontoauszug-Import, BelegerkennungSammel-Import und Texterkennung
DateispeicherJeder Zugriff auf Nextcloud bzw. den lokalen Speicher
Schnittstelle (API)Zugriffe externer Werkzeuge, abgelehnte Schlüssel, Drosselung
Support-ZugangStart 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:

VariableZweck
LOG_LEVELStandardstufe, solange hier nichts eingestellt ist
LOG_FORMAT=jsonMaschinenlesbare Ausgabe für Log-Sammler
LOG_FILE, LOG_FILE_MAX_MB, LOG_FILE_KEEPZusätzliche Logdatei mit Rotation
LOG_SLOW_REQUEST_MS, LOG_SLOW_QUERY_MSAb 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?