2016-05-22 13 views
1

Ich versuche, meine Python-App auf Docker verwenden. Ich benutze ein Paket mit der Bezeichnung autologging, das tatsächlich Pythons logging Bibliothek verwendet.Python Logger in Docker funktioniert nicht

Wenn ich meine App in einem Andock-Container verwende, werden die sys-Drucke ausgedruckt, aber nicht die vom Logger erzeugten.

Ich habe versucht, die folgenden in der compose.yml Datei zu definieren, und es funktioniert immer noch nicht:

stdin_open: True 
tty: True 
privileged: True 
cap_add: 
- "ALL" 
environment: 
- PYTHONUNBUFFERED=0 

Ich habe auch versucht die -u Option.

+1

Haben Sie außerhalb von Docker die gleiche App getestet? –

+0

ja, kein Problem dort –

+0

Wenn Sie den Logger so konfigurieren, dass er auf eine Datei zeigt, erscheinen die Protokolle dort? –

Antwort

0

Das Autologging-Modul verwendet Pythons Standardprotokollierungsmodul. Als solches unterliegt es den gleichen Konfigurationseinstellungen. Wenn Sie keine Protokollausgabe sehen, stellen Sie sicher, dass Sie die Protokollierung für die Anwendung entsprechend konfigurieren. (Ich bin selbst nicht vertraut mit Docker; es kann einfach der Fall sein, dass der Root-Logger die Protokolleinträge standardmäßig unterdrückt.)

Wenn Sie die Protokollierung für Ihre Anwendung nicht explizit konfiguriert haben, lesen Sie bitte die Python-Dokumentation here. Wenn Sie explizit konfigurierte Protokollierung für Ihre Anwendung haben, geben Sie bitte Details an (es gibt ein offenes Problem, um dies bei https://github.com/mzipay/Autologging/issues/1 zu verfolgen).

(Anmerkung: Ich bin der Autor des autologging.)

+0

Ich glaube, das Problem ist eine fehlende Protokollierungskonfiguration für die Anwendung. Im Folgenden sehen Sie ein Beispiel für ein Docker-Image, das das Protokollieren von Protokolleinträgen mit autologging.logged und autologging.trace mithilfe des standardmäßigen Docker-Protokolltreibers veranschaulicht: https://hub.docker.com/r/mzipay/autologging-issue-1/ – NinthTest