Как я могу реализовать систему, в которой несколько процессов Node.js записывают в тот же файл с fs.createWriteStream
, чтобы они не перезаписывали данные? Похоже, что настройка по умолчанию для fs.createWriteStream заключается в том, что файл очищается при вызове этого метода. Моя цель состоит в том, чтобы очистить файл один раз, а затем все остальные последующие авторы только добавляют данные.fs.createWriteStream для нескольких процессов
Должен ли я использовать fs.createWriteStream
, а затем fs.appendFile
? Или есть способ открыть поток для каждого процесса, а не только для первого процесса открыть файл?
Считаете ли вы использование посредника для делегирования записи журнала? Например, syslog, служба регистрации третьей стороны или даже выделенный процесс узла, который записывает входящие запросы журнала (например, через udp или unix-сокет или что-то еще) в файл. – mscdex
Да, спасибо, что это хорошее наблюдение, на самом деле мне, вероятно, придется это сделать. Я полагаю, что для каждого дочернего процесса было бы более результативно напрямую обращаться к файлу; однако, данные файла могут быть повреждены, а данные не в порядке? Поэтому я передаю stderr (который является рассматриваемым потоком данных) в один родительский процесс node.js, который затем записывает данные в файл. Менее эффективен, поскольку родительский процесс является узким местом, но, вероятно, является прекрасным. –