const micro = require('micro'); const { json, send } = require('micro'); const { RuleEngine } = require('./RuleEngine'); const fs = require('fs'); const jsonminify = require('jsonminify'); const winston = require("winston"); const logger = winston.createLogger({ level: 'info', format: winston.format.combine( winston.format.timestamp(), winston.format.printf(info => { return `${info.timestamp} ${info.level}: ${info.message}`; }) ), transports: [ new winston.transports.Console(), new winston.transports.File({ filename: './log/LogAggregatorError.log', level: 'error' }), new winston.transports.File({ filename: './log/Combined.log' }) ] }); const ruleEngine = new RuleEngine("casrpslog"); logger.log("info","Service Starting."); const server = micro(async (req, res) => { const js = await json(req); try { inputLine = JSON.parse(js); } catch (ex) { logger.log("error","Input not in JSON format:" + line); } let isWhiteListed = ruleEngine.processData(inputLine); let miniInput=jsonminify(JSON.stringify(inputLine)) ; let now = Date(); if (isWhiteListed) { logger.log("debug","Not Whitelisted: " + miniInput); fs.appendFileSync("./log/skipped.log",miniInput + "\n"); } else { logger.log("info","Not Whitelisted: " + miniInput); fs.appendFileSync("./log/issues.log",miniInput + "\n"); } send(res, 200, "OK"); }); server.listen(2222);