diff --git a/libs/metrics.js b/libs/metrics.js index 299977bd06e6d77b6c35e4e052bf6118e9978ca4..f05328226ee3652088b7454f5d94a19bef6a6f50 100644 --- a/libs/metrics.js +++ b/libs/metrics.js @@ -61,7 +61,7 @@ fs = require('fs'); // FIXME: separate logs depending on purpose? var log_path = configuration.get('log_path'); -var LOGGERS = []; +var LOGGER; // simple inline function for creation of dirs function mkdir_p(p) { @@ -71,20 +71,18 @@ function mkdir_p(p) { } } -function setupLogger(category) { +function setupLogger() { + // don't create the logger if it already exists + if (LOGGER) return; + if (!log_path) return console.log("no log path! Not logging!"); else mkdir_p(log_path); + var filename = path.join(log_path, "metrics.json"); - // don't create the logger if it already exists - if (LOGGERS[category]) - return; - - var filename = path.join(log_path, category + "-log.txt"); - - LOGGERS[category] = new (winston.Logger)({ + LOGGER = new (winston.Logger)({ transports: [new (winston.transports.File)({filename: filename})] }); } @@ -96,22 +94,22 @@ exports.report = function(category, entry) { throw new Error("every log entry needs a type"); // setup the logger if need be - setupLogger(category); + setupLogger(); // timestamp entry.at = new Date().toUTCString(); // if no logger, go to console (FIXME: do we really want to log to console?) - LOGGERS[category].info(JSON.stringify(entry)); + LOGGER.info(JSON.stringify(entry)); }; // utility function to log a bunch of stuff at user entry point exports.userEntry = function(category, req) { exports.report(category, { - type: 'signin', - browser: req.headers['user-agent'], - rp: req.headers['referer'], - // IP address (this probably needs to be replaced with the X-forwarded-for value - ip: req.connection.remoteAddress - }); -}; \ No newline at end of file + type: 'signin', + browser: req.headers['user-agent'], + rp: req.headers['referer'], + // IP address (this probably needs to be replaced with the X-forwarded-for value + ip: req.connection.remoteAddress + }); +};