Normalerweise erkenne ich, dass es besser ist, zusätzlich zu flask und nginx einen uwsgi-Server einzurichten, aber dies ist das Ergebnis dessen, was mit der aktuellen Konfiguration möglich ist.
Ich habe einen Flask + Nginx-Server in Docker eingerichtet, aber das Flask-Protokoll wird nur als Datei ausgegeben und kann an der Eingabeaufforderung für Docker-Ausführung oder Docker-Protokolle nicht überprüft werden. Ich möchte es irgendwie können.
Ich werde es erheblich weglassen, aber es ist wie folgt.
Dockerfile
FROM centos:centos7
CMD ["/bin/bash", "./start.sh"]
start.sh
# !/bin/bash
uwsgi --ini=uwsgi.ini
nginx -g "daemon off;"
uwsgi.ini
daemonize = /var/log/uwsgi/uwsgi.log
Im obigen Zustand wird der uwsgi-Prozess als Daemon und Nginx als Vordergrundjob ausgeführt. Alle Protokolle werden in /var/log/uwsgi/uwsgi.log ausgegeben, das von daemonize angegeben wird.
Ich habe ein paar Dinge ausprobiert, aber es hat nicht funktioniert, und als Ergebnis hat die dritte Methode funktioniert.
Ich denke, dass die Konsolenausgabe bereits erfolgt ist, aber prüfen Sie, ob dies möglich ist, indem Sie einen zusätzlichen Stream der Konsolenausgabe hinzufügen.
logger.addHandler(logging.StreamHandler())
Daemonize scheint jedoch das, was standardmäßig ausgegeben wird, an eine Datei zu senden, und der Inhalt des hinzugefügten Streams wird auch in die Datei ausgegeben.
Daemonize gibt die Standardausgabe und die Fehlerausgabe an die angegebene Datei aus, aber ich habe es gewagt, zu versuchen, sie durch Ausgabe in / dev / stdout zur Standardausgabe zu machen. Ich konnte erfolgreich auf die Konsolenausgabe ausgeben, aber die Protokollrotationsfunktion des Kolbens überprüft die Datei und es wird ständig eine Fehlermeldung angezeigt. Ich suchte nach einer Möglichkeit, die Protokollrotationsfunktion zu unterdrücken, gab jedoch auf, weil ich sie nicht finden konnte.
uwsgi_check_logrotate()/lseek(): Illegal seek [core/logging.c line 494]
Schwanzüberwachung in der Startshell hinzugefügt. Stellen Sie sicher, dass das Protokoll sowohl in der Datei als auch in der Konsole ausgegeben werden kann. Ich muss die Ausgabedateien sowohl in start.sh als auch in uwsgi.ini abgleichen, aber ich konnte es vorerst tun.
start.sh
#Zusätzlicher Teil
touch /var/log/uwsgi/uwsgi.log
tail -F /var/log/uwsgi/uwsgi.log > /dev/stdout &
uwsgi --ini=uwsgi.ini
nginx -g "daemon off;"
Recommended Posts