У меня есть простой сценарий просмотра файлов статистики, как это:
Я запускаю fs.stat, скажем, каждые 2 секунды и ищу изменения в результате.
Другое приложение может записать в файл в любой момент. Когда и когда это происходит, я вижу, что размер изменился, но mtime остается неизменным.
ENV: Windows10 / NodeJS v8.10.0
- Я пробовал fs.watch, но у меня была такая же / похожая проблема - нет событий на небольшие изменения.
- Если я открою журнал с помощью sublime / notepad ++, добавлю новые строки вручную и сохраню - все работает и обновляет дату
Пример сценария:
fs.stat(filename, (err, stat) => {
if (err) return console.log(err);
if (files[f]) {
if (files[f].mtime !== stat.mtimeMs || files[f].size !== stat.size) {
files[f].mtime = stat.mtimeMs;
files[f].size = stat.size;
files[f].changed = true;
}
} else {
let jnum = j_num(f);
files[f] = {
f: f,
jnum: jnum,
mtime: stat.mtimeMs,
size: stat.size,
proceed: 0,
changed: true,
};
}
console.log(files[f].f, files[f].size, files[f].mtime);
});
Пример вывода:
file size mtime
180428200919.01.log 23265 1524935545774.6038
180428200919.01.log 23265 1524935545774.6038
180428200919.01.log 23265 1524935545774.6038
180428200919.01.log 23348 1524935545774.6038
180428200919.01.log 23348 1524935545774.6038
180428200919.01.log 23348 1524935545774.6038
180428200919.01.log 23348 1524935545774.6038 << mtime the same
180428200919.01.log 23431 1524935545774.6038 << size changed
180428200919.01.log 23431 1524935545774.6038
180428200919.01.log 23431 1524935545774.6038
Может кто-нибудь объяснить это поведение и как его избежать?
Может ли это произойти из-за того, что приложение writer не закрыло (должным образом) файл журнала?