Relution Logs

Im Docker-Container schreibt Relution standardmäßig keine eigene Logdatei (relution.log). Alle Logausgaben gehen auf die Konsolenausgabe des Containers und lassen sich mit docker logs anzeigen. Dies ist für die meisten Änderungen ausreichend. Es wird empfohlen, den Fehler zu provozieren, um ihn sichtbar zu machen, bevor die Schritte durchgeführt werden.


Container-ID finden

  1. Ein Terminal starten und sich ggf. einloggen
  2. Herausfinden, welchen Namen und welche ID der Docker hat. Container ID und Name anzeigen
sudo docker ps

Das Terminal zeigt daraufhin eine Ausgabe wie die folgende:

CONTAINER ID   IMAGE                      COMMAND                  CREATED      STATUS                            PORTS      NAMES
5858aa05c24c   relution/relution:latest   "/relution-docker.sh…"   6 days ago   Up 9 seconds (health: starting)   8080/tcp   docker_relution

Die Informationen werden sich von denen im Beispiel unterscheiden. Zum Starten des Protokolls können der Name oder die ID des Containers verwendet werden. Im Beispiel wurde der Name verwendet.


Log mit Containername starten

docker logs -f docker_relution

Die Option -f sorgt dafür, dass das Log immer fortlaufend angezeigt wird. Daher wird schnell viel Text im Terminal angezeigt. Das Log lässt sich mit CTRL + C anhalten, danach kann nach oben gescrollt werden.


Log in Datei speichern

Um die Protokolle in einer Datei im aktuellen Pfad zu speichern, diesen Befehl verwenden:

docker logs -f docker_relution > my_logfile.txt

Es ist auch möglich, einen alternativen Pfad zu verwenden:

docker logs -f docker_relution > /opt/relution/my_logfile.txt

Zum Übertragen der Datei auf den eigenen PC Filezilla, WinSCP oder einen anderen SCP-Client verwenden.


Logrotation

Docker-Logs sind grundsätzlich flüchtig. Manchmal kann es sinnvoll sein, diese über einen längeren Zeitraum aufzubewahren. Nachfolgend ein Beispiel auf Basis einer Rocky Linux 9 + Docker Installation.

Logrotation für Docker-Host Logs konfigurieren

Docker speichert seine Standard-Logs unter /var/lib/docker/containers/<container-id>/<container-id>-json.log. Damit diese Logs handhabbar bleiben, kann die integrierte Log-Rotation von Docker über die Datei /etc/docker/daemon.json aktiviert werden:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "30"
  }
}

Danach den Docker-Dienst neu starten:

sudo systemctl restart docker

Logs täglich rotieren, zippen und ins Relution-Verzeichnis verschieben

Für die tägliche Archivierung kann logrotate verwendet werden. Hierfür muss es nachträglich auf dem Linux System installiert werden via:

sudo dnf install logrotate

Dafür muss zuerst ein Logs-Ordner erstellt werden:

sudo mkdir /opt/relution/logs

Anschließend muss eine Konfigurationsdatei unter /etc/logrotate.d/docker mit folgendem Inhalt erstellt werden:

/var/lib/docker/containers/WILDCARD/WILDCARD.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
copytruncate
create 640 root root
sharedscripts
postrotate
    TIMESTAMP=$(date +%Y-%m-%d-%H%M%S)
    for file in $(find /var/lib/docker/containers/ -type f -name "*.log.*.gz"); do
        DIR="/opt/relution/logs"
        FILENAME="$(basename "$file" | cut -c1-12)-${TIMESTAMP}.log.gz"
        mv "$file" "${DIR}/${FILENAME}"
    done
endscript
}

Die Konfiguration erfasst die Logs aller Container auf dem Host. Durch sharedscripts läuft der postrotate-Teil einmal nach allen Containern. Jede archivierte Datei beginnt mit den ersten 12 Zeichen der Container-ID, wie sie docker ps anzeigt; darüber lässt sich die Datei dem jeweiligen Container zuordnen (z. B. Relution, Datenbank, nginx).

Mittels folgendem Test-Befehl kann eine Log sofort erstellt werden:

sudo logrotate --force /etc/logrotate.d/docker

Anschließend sollte im /opt/relution/logs-Ordner eine Log-Datei gespeichert sein. Wegen delaycompress entsteht die erste .gz-Datei erst beim zweiten Lauf.

ls -lah /opt/relution/logs

Linux

Wurde Relution im Standardverzeichnis /opt/relution installiert, finden sich die Logs in /opt/relution/log. Die aktuellste Logdatei heißt relution.log, archivierte Logdateien heißen relution.log.<Datum>.<Index>.gz (z. B. relution.log.2026-10-17.0.gz). Wenn Relution an einem anderen Ort installiert wurde, liegt das Log-Verzeichnis log im jeweiligen Installationsverzeichnis.


Windows

Wenn Relution im Standardverzeichnis %ProgramFiles%\relution (in der Regel C:\Program Files\relution) installiert wurde, finden sich die Logs in %ProgramFiles%\relution\log. Die aktuellste Logdatei heißt relution.log, archivierte Logdateien heißen relution.log.<Datum>.<Index>.gz (z. B. relution.log.2026-10-17.0.gz). Wenn Relution an einem anderen Ort installiert wurde, liegt das Log-Verzeichnis log im jeweiligen Installationsverzeichnis.


Rotation und Speicherort der Logdatei

Relution rotiert die Logdatei relution.log selbst: täglich und zusätzlich, sobald die Datei 128 MB erreicht. Der Index im Dateinamen beginnt bei 0 und wird bei jeder weiteren Rotation am selben Tag hochgezählt. Archivierte Dateien werden 30 Tage aufbewahrt, insgesamt belegen sie höchstens 1 GB.

Über die Umgebungsvariable RELUTION_LOGS lässt sich das Log-Verzeichnis auf einen anderen absoluten Pfad legen. Ohne diese Angabe liegt es im Unterverzeichnis log des Installationsverzeichnisses.

Im Docker-Container ist die Logdatei abgeschaltet (Umgebungsvariable RELUTION_LOG_FILE_LEVEL=OFF im Image). Wird RELUTION_LOG_FILE_LEVEL auf ALL gesetzt, schreibt und rotiert Relution relution.log auch im Container. Abgeschaltet wird die Logdatei nur mit dem Wert OFF bzw. off (in der application.yml über den Schlüssel relution.log.file.level). Damit die Dateien ein Neuerstellen des Containers überdauern, wird das Log-Verzeichnis über RELUTION_LOGS auf ein als Volume eingebundenes Verzeichnis gelegt. Das ist eine Alternative zur oben beschriebenen Logrotation über logrotate.


Weiterleitung an einen Syslog-Server

Zusätzlich zur Konsole und zur Logdatei kann Relution die Logausgaben an einen Syslog-Server senden. Die Weiterleitung erfolgt per UDP, ist standardmäßig abgeschaltet und wird in der application.yml konfiguriert; im Docker-Container lassen sich die Schlüssel auch als Umgebungsvariablen setzen (z. B. RELUTION_LOG_SYSLOG_LEVEL):

SchlüsselStandardwertBedeutung
relution.log.syslog.levelOFFMindest-Loglevel der weitergeleiteten Einträge, z. B. INFO; nur OFF bzw. off schaltet die Weiterleitung ab
relution.log.syslog.hostlocalhostHostname oder IP-Adresse des Syslog-Servers
relution.log.syslog.port514Port des Syslog-Servers
relution.log.syslog.facilityLOCAL0Syslog-Facility

Gerade für die langfristige Aufbewahrung von Docker-Logs bietet sich die Weiterleitung an einen zentralen Syslog-Server an. Die Änderung wird nach einem Neustart von Relution wirksam.


Loglevel für erweiterte Fehleranalyse anpassen

Reichen die Standard-Logs für die Analyse eines Problems nicht aus, kann das Log-Level gezielt auf DEBUG angehoben werden (z. B. im laufenden Betrieb ohne Neustart über die Web API oder, nach einmaliger Freischaltung, über das System-Portal). Eine ausführliche Anleitung dazu ist unter Loglevel einstellen → beschrieben.

Top