nsyslog
Version:
Modular new generation log agent. Reads, transform, aggregate, correlate and send logs from sources to destinations
36 lines (32 loc) • 1.06 kB
JavaScript
const
fs = require('fs-extra'),
path = require('path'),
Shm = require('../shm'),
logger = require('../logger'),
{timer} = require('../util'),
chokidar = require('chokidar');
class GlobalDB {
constructor(datadir) {
this.file = path.resolve(datadir,'global.json');
this.watcher = chokidar.watch(path.resolve(datadir,'global.json'));
this.watcher.on('all',(event, path)=>{
logger.warn('GlobalDB file ',this.file, 'has changed');
this.reloadDatabase();
});
}
async reloadDatabase() {
try {
await timer(500);
let raw = await fs.readFile(this.file, 'utf-8');
let json = JSON.parse(raw);
Object.keys(json).forEach(k=>{
logger.debug(`Setting global key ${k}`,json[k]);
Shm.hset('global',k,json[k]);
global._[k] = json[k];
});
}catch(err) {
logger.error(err);
}
}
}
module.exports = GlobalDB;