#node.js #file #logging #node-streams #log-rotation
Вопрос:
Обычно вращающиеся файлы используются для обработки сообщений журнала, чтобы управлять размерами файлов и содержащимися в них сообщениями журнала. Однако меня интересует несколько иной вариант использования: входящие показания датчиков должны сохраняться в файл каждый день. А это напомнило мне о вращающихся файлах журналов, я решил пойти по этому пути и использовать rotating-file-stream
модуль. Базовая реализация работает по желанию, и я могу записывать входящие значения в файлы данных csv:
"use strict";
const rfs = require("rotating-file-stream");
const CSV_BASE_NAME = "debug_data.csv";
const ROTATE_CSV_INTERVAL = "10s";
const DATA_INTERVAL_MS = 2000;
const stream = rfs.createStream(CSV_BASE_NAME, {
interval: ROTATE_CSV_INTERVAL,
});
const writeData = () => {
stream.write("sample data" "n");
}
setInterval(writeData, DATA_INTERVAL_MS);
Однако запись данных может быть включена или отключена пользователем. Поэтому данные не должны записываться в поток целевого файла, если запись данных отключена:
"use strict";
const rfs = require("rotating-file-stream");
const CSV_BASE_NAME = "debug_data.csv";
const ROTATE_CSV_INTERVAL = "10s";
const DATA_INTERVAL_MS = 2000;
const ENABLE_RECORDING = false;
const stream = rfs.createStream(CSV_BASE_NAME, {
interval: ROTATE_CSV_INTERVAL,
});
const writeData = () => {
if (ENABLE_RECORDING) {
stream.write("sample data" "n");
}
};
setInterval(writeData, DATA_INTERVAL_MS);
Однако вращающийся поток файлов всегда генерируется, поскольку он обрабатывается rotating-file-stream
модулем, не зная, что запись данных отключена или включена. csv-файлы генерируются в соответствии с указанным interval
, которые не будут содержать данных, если запись данных отключена.
Есть ли способ приостановить/остановить вращение файлов, когда запись данных отключена, чтобы предотвратить создание пустых файлов?