Bei dieser Antwort geht es eher um Überlegungen zur Skalierbarkeit - wenn die Anzahl der Mitarbeiter hoch sein kann und / oder mehrere von ihnen gleichzeitig mit hoher Geschwindigkeit Protokolle erstellen können.
Ja, es empfiehlt sich, mehrere Protokolldateien gleichzeitig zu verwenden.
Der Versuch, Protokolle mehrerer Worker in Echtzeit zu einer einzigen Protokolldatei zusammenzufassen, führt zu folgenden Problemen:
- Durch die Verwendung blockierender Mechanismen zur Verhinderung von Nachrichtenverlusten werden die Mitarbeiter verlangsamt
- Protokollmeldungen können in der kombinierten Protokolldatei nicht in der richtigen Reihenfolge angezeigt werden
- Eine zentralisierte Protokollierungsfunktion, die die Protokolle kombiniert, kann aufgrund der begrenzten Schreibgeschwindigkeit überlastet werden. Nachrichten würden verloren gehen
Das Speichern von Protokolldateien (wobei mehrere Protokolldateien gleichzeitig aktiv sind) ist selbst eine Technik, die von einigen Hosting-Anbietern verwendet wird, die skalierbare, zentralisierte Protokollierungsdienste mit hoher Leistung anbieten. Wenn Sie beispielsweise Protokolle in Dateien exportieren, werden bei der StackDriver-Protokollierung von Google mehrere gespeicherte Protokolldateien erstellt. Aus Protokolleinträgen in Google Cloud Storage :
Wenn Sie Protokolle in einen Cloud-Speicher-Bucket exportieren, schreibt die Stackdriver-Protokollierung eine Reihe von Dateien in den Bucket. Die Dateien sind nach Protokolltyp und Datum in Verzeichnishierarchien organisiert. Der Protokolltyp kann ein einfacher Name syslog
oder ein zusammengesetzter Name sein
appengine.googleapis.com/request_log
. Wenn diese Protokolle in einem Bucket namens gespeichert my-gcs-bucket
würden, würden die Verzeichnisse wie im folgenden Beispiel benannt:
my-gcs-bucket/syslog/YYYY/MM/DD/
my-gcs-bucket/appengine.googleapis.com/request_log/YYYY/MM/DD/
Ein einzelner Bucket kann Protokolle mehrerer Protokolltypen enthalten.
Die Blattverzeichnisse ( DD/
) enthalten mehrere Dateien, von denen jede die exportierten Protokolleinträge für einen im Dateinamen angegebenen Zeitraum enthält. Die Dateien werden sharded und ihre Namen enden mit einer Shard-Nummer
Sn
oder An
(n = 0, 1, 2, ...). Zum Beispiel sind hier zwei Dateien, die in den folgenden Ordnern gespeichert werden können directory
my-gcs-bucket/syslog/2015/01/13/
:
08:00:00_08:59:59_S0.json
08:00:00_08:59:59_S1.json
Diese beiden Dateien enthalten zusammen die syslog
Protokolleinträge für alle Instanzen während der Stunde ab 0800 UTC. Um alle Protokolleinträge zu erhalten, müssen Sie alle Shards für jeden Zeitraum lesen - in diesem Fall die Dateishards 0 und 1. Die Anzahl der geschriebenen Dateishards kann sich je nach Umfang der Protokolleinträge für jeden Zeitraum ändern.
Solche leistungsstarken Protokollierungsdienste können auch Alternativen zur Protokollierung in Dateien bieten. Die Verwaltung von Protokolldateien kann daher insgesamt vermieden werden, wenn dies von Interesse ist:
Schließlich - wenn das Zusammenführen von Protokolldateien in Echtzeit nicht erforderlich ist, können mehrere Protokolldateien bei der Offline-Protokollverwaltung hilfreich sein:
- Einfach zu erstellende progressive Protokollsicherungs-, -komprimierungs-, -archivierungs- und -entsorgungsschemata
- Die parallele Verarbeitung mehrerer Sätze von Protokollen (Protokolldateien) ist möglich, wodurch Engpässe verringert bzw. vermieden werden
- Kein Aufteilen und erneutes Schreiben von Dateien erforderlich