Wie kann ich ein System implementieren, in dem mehrere Node.js-Prozesse mit fs.createWriteStream
in die gleiche Datei schreiben, sodass sie keine Daten überschreiben? Es sieht so aus, als ob die Standardeinstellung für fs.createWriteStream ist, dass die Datei gelöscht wird, wenn diese Methode aufgerufen wird. Mein Ziel ist es, die Datei einmal zu löschen und dann alle anderen nachfolgenden Autoren nur Daten anhängen.fs.createWriteStream über mehrere Prozesse hinweg
Sollte ich fs.createWriteStream
und dann fs.appendFile
verwenden? Oder gibt es eine Möglichkeit, einen Stream für jeden Prozess zu öffnen, nicht nur für den ersten Prozess, um die Datei zu öffnen?
Haben Sie darüber nachgedacht, einen Intermediär zu verwenden, um das Protokollschreiben zu delegieren? So wie Syslog, ein Protokollierungsdienst eines Drittanbieters oder sogar ein dedizierter Knotenprozess, der eingehende Protokollanforderungen (z. B. über UDP oder Unix-Socket oder was auch immer) in die Datei schreibt. – mscdex
Ja danke das ist eine gute Beobachtung, eigentlich werde ich das wohl tun müssen. Ich denke, es wäre leistungsfähiger für jeden Kindprozess, direkt an die Datei zu gelangen; aber dann könnten die Dateidaten beschädigt werden und die Daten nicht in der richtigen Reihenfolge? Also pipe stderr (das ist der fragliche Datenstrom) zu einem einzelnen Elternteil node.js Prozess, der dann die Daten in die Datei schreibt. Weniger performant als Elternprozess ist ein Engpass, aber wahrscheinlich in Ordnung. –