2

Dies ist eine offene Frage zum Protokollieren, wenn Sie verschiedene Django-Prozesse haben. Wie kann ich die Ausgabe von verschiedenen Django-Prozessen in der gleichen Protokolldatei erhalten? Wie würden Sie dieses Problem angehen?Verschiedene Django-Prozesse dasselbe Protokoll

Jetzt zu meinem aktuellen Setup. Ich habe eine Django Webapp läuft auf Webfaction. In django, an die Konsole stdout wird Protokollierung

'console': { 
    'class': 'logging.StreamHandler', 
    'formatter': 'simple', 
}, 

In httpd.conf ist es so konfiguriert

ErrorLog /home/elmartus/logs/user/error_myapp.log 

zu gehen Dann habe ich einige Jobs, die von cron wie diese ./manage.py runjobs hourly laufen lassen, die derzeit Ausgabe an die Konsole.

Also, wie kann ich die Ausgabe der normalen Ausgabe von Django und diese Befehlszeilenprozesse in die gleiche Datei bekommen? Es wäre auch interessant zu wissen, wie man das mit Sellerie-Aufgaben und anderen Aufgaben, die auf einem separaten Django-Prozess laufen, macht.

Danke!

+0

Die einfachste Sache, um es zu schreiben ist nicht auf Konsole anmelden, sondern Schreiben Sie direkt in eine Protokolldatei. – e4c5

+1

Schreiben in die gleiche Datei kann die Ausgabe von verschiedenen Prozessen, z. Zeilen, die in der Mitte einer Zeile beginnen und von einem anderen Prozess geschrieben werden. Ein gängiger Ansatz zum Verknüpfen von Protokollen aus verschiedenen Prozessen besteht darin, in einen FIFO zu schreiben und dann einen Protokollierungsprozess auszuführen, der den FIFO ausliest und an die Datei anfügt. FIFO-Schreibvorgänge (die nicht zu groß sind, es gibt einen Puffer, der vom Kernel aufrechterhalten wird) sind atomar, daher werden Protokollschreibvorgänge nicht zusammengemischt. – grochmal

Antwort

0

Blick auf die example von Logging-Modul docs

Sie ein Prozess „log-Server“ genannt haben und dann können viele Anwendungen über logging.handlers.SocketHandler

Verwandte Themen