[PYTHON] Ausgabeprotokoll an die Konsole mit Flask + Nginx auf Docker

Annahme

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.

Hintergrund

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.

Aktuelle Konfiguration

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.

Korrespondenz

Ich habe ein paar Dinge ausprobiert, aber es hat nicht funktioniert, und als Ergebnis hat die dritte Methode funktioniert.

Fügen Sie die Konsolenausgabe explizit zur Flasche hinzu

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.

Setzen Sie Daemonize auf / dev / stdout

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]

Überwachen Sie Protokolldateien mit Schwanz

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

Ausgabeprotokoll an die Konsole mit Flask + Nginx auf Docker
Python-Protokoll mit GAE an die Konsole ausgeben
So melden Sie sich bei Docker + NGINX an
[Mit Bilddiagramm] Nginx + Gunicorn + Flask konvertiert zu Docker [Teil 1]
(Hinweis) Hinweise zum Erstellen einer TensorFlow + Flask + Nginx-Umgebung mit Docker Compose
Starten Sie die Flask-Anwendung mit Docker auf Heroku
So löschen Sie ein Protokoll mit Docker, nicht um ein Protokoll zu sammeln
Führen Sie Flask unter CentOS mit Python3.4, Gunicorn + Nginx aus.
Debug-Protokoll mit GAE dev_appserver.py auf Eclipse + PyDev ausgeben
Von der Einführung von Flask unter CentOS bis zum Service unter Nginx und uWSGI
API mit Flask + uWSGI + Nginx
Vom Umgebungsaufbau bis zum Einsatz für Kolben + Heroku mit Docker
Bis die von Flask + MySQL erstellte API in Docker konvertiert wird
Post Jenkins Jenkins Konsolenausgabe an Slack
Erstellen eines Flask-Servers mit Docker
Ausgabe in eine CSV-Datei mit Python
Unit Test Log Ausgabe mit Python
So überschreiben Sie die Ausgabe auf die Konsole
Jetzt ist es an der Zeit, DB mit Docker zu installieren! DB-Installation für Anfänger auf Docker
Versuchen Sie, Audio mit M5 STACK auszugeben
Anwendungsentwicklung mit Docker + Python + Flask
Ich habe ein Systemkonfigurationsdiagramm mit Diagrams on Docker geschrieben
Wrapper, wenn Sie utf-8 + ansi color in der Windows-Konsole ausgeben möchten
Ich möchte kühl auf die Konsole ausgeben
Verknüpfen Sie WAS- und FLASK-Anwendungen auf Docker
Senden Sie CSS mit Flask komprimiert an Gzip
Stellen Sie mit Python in Docker eine Verbindung zu MySQL her
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Ich war auf dotCloud süchtig nach Flask
So erhalten Sie eine farbige Ausgabe an die Konsole
Zusammenfassung der Nginx-Einstellungen (Flask + Docker + Gunicorn Edition)
Erstellen Sie einen Webdienst mit Docker + Flask
Benutzerinformationen usw. in das Django-Protokoll ausgeben
Erstellen Sie mit Docker eine Umgebung aus NGINX + NGINX Unit + MySQL
So installieren Sie Python3 mit Docker Centos
Erstellen Sie eine Kolben-App mit Tensorflow und Dlib für Centos7
Hochladen mit Heroku, Flask, Python, Git (4)
Melden Sie sich mit SSH bei einem Remote-Server an
Ein Memorandum, um WebDAV nur mit Nginx zu erstellen
Einstellung zur Ausgabe des Protokolls zur Ausführung von cron
Gewinnen Sie die Python + Flask-Web-App mit Jenkins
Python-Protokoll wird nicht mit Docker-Compose ausgegeben
Hallo Welt mit Nginx + Uwsgi + Python auf EC2
Führen Sie Python-Webanwendungen mit NGINX + NGINX Unit + Flask aus
Ich habe versucht, LLVM IR mit Python auszugeben
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Melden Sie sich mit Selenium Python bei Yahoo Business an
Starten Sie Nginx mit Docker ohne Nginx in CentOS8
Melden Sie sich einfach mit mehreren Konten bei AWS an
So installieren Sie OpenGM unter OSX mit Macports
Einführung in Python mit Atom (unterwegs)
Senden Sie msgpack mit Ajax an die flk (werkzeug) Umgebung
Ich möchte die Eingabe / Ausgabe von Dateien unter Linux protokollieren
Geben Sie die Testfunktion docstring mit pytest-html in den Bericht ein
[CentOS8] So geben Sie die Standard-Python-Ausgabe in das Systemd-Protokoll aus