Ich muss Legacy-Anwendung in Docker-Container setzen. Die App läuft gut, aber ich kann nicht alle Protokolldateien anzeigen. Das Problem besteht darin, dass die App nach dem Starten der ausführbaren Datei mehrere Protokolldateien erstellt (z. B. service.log, license.log, security.log
usw.).Umleiten mehrerer Protokolldateien in Docker Container zu stdout (Legacy-Anwendung)
Ich habe ein Startskript (nennen wir es start.sh
), die einige Dinge vorbereitet (Links, Config) und startet dann die App, die die genannten Protokolldateien erstellt.
Nach einigem googeln habe ich similar problem gefunden und versuche, die Lösung anzuwenden, die Named Pipes verwendet (das Erstellen der Verbindung zu /proc/1/fd/1
hat nicht funktioniert). So stellte ich die folgenden in der Startskript:
mkfifo /path/to/app/license.log && tail -f /path/to/app/license.log &
mkfifo /path/to/app/security.log && tail -f /path/to/app/security.log &
...
aber das Problem ist, dass nur die erste Datei auf docker logs
weitergeleitet. Die anderen sind überhaupt nicht sichtbar.
Das Kuriose ist, dass in start.sh
ich eine Linie source before_start.sh
habe, die je nach Umgebung einige spezifische Befehle ausführt. Platzieren der mkfifo license.log
in der start.sh
und der mkfifo service.log
in der before_start.sh
funktioniert. Das Problem ist, dass ich mehr Dateien habe und nicht alle source
wollen.
Hat jemand eine Idee, wie man das löst?