diff --git a/lib/logWriter.js b/lib/logWriter.js index f05d239..fd317a7 100644 --- a/lib/logWriter.js +++ b/lib/logWriter.js @@ -60,6 +60,14 @@ }); }; + /** + * rootPaths + * + * Store all rootPaths + * @type {Array} + */ + var rootPaths = []; + /** * LogWriter @@ -67,15 +75,26 @@ * Save console logs on disk * * @constructor + * + * @param {String} rootPath root logs folder */ - var LogWriter = function () {}; + var LogWriter = function (rootPath) { + + this.rootPath = rootPath || 'logs'; + + //Check if the folder is already in use + if (rootPaths.indexOf(this.rootPath) > -1) { + throw new Error('Folder ' + this.rootPath + ' already in use'); + } else { + rootPaths.push(this.rootPath); + } + }; /** * LogWriter.prototype.getPath * * @param {Object} opt params - * @param {String} opt.rootPath root logs folder - * @param {String} opt.logger logger options + * @param {String} opt.logger logger options * * @return {String} The path to current folder (without rootPath) */ @@ -93,8 +112,7 @@ * LogWriter.prototype.getFile * * @param {Object} opt params - * @param {String} opt.rootPath root logs folder - * @param {String} opt.logger logger options + * @param {String} opt.logger logger options * * @return {String} the filname (with extension) */ @@ -112,14 +130,13 @@ * LogWriter.prototype.path * * @param {Object} opt params - * @param {String} opt.rootPath root logs folder - * @param {String} opt.logger logger options + * @param {String} opt.logger logger options * * @return {String} the full path to file */ LogWriter.prototype.path = function (opt) { return path.join( - opt.rootPath, + this.rootPath, this.getPath(opt), this.getFile(opt) ); @@ -133,7 +150,6 @@ * @param {Object} log The log to save * * @param {Object} opt Options - * @param {String} opt.rootPath root logs folder * @param {String} opt.logger logger options */ LogWriter.prototype.save = function (log, opt) { @@ -155,12 +171,10 @@ * Save logger opt in root folder * * @param {Object} logger Logger options. - * @param {Object} opt LogWriter options - * @param {String} opt.rootPath Logs folder */ - LogWriter.prototype.saveOpt = function (logger, opt) { + LogWriter.prototype.saveOpt = function (logger) { - var filePath = path.join(opt.rootPath, logger.name + '.json'); + var filePath = path.join(this.rootPath, logger.name + '.json'); writeFile(filePath, JSON.stringify(logger), function (err) { if (err) { diff --git a/scribe.js b/scribe.js index 3f8279b..776115e 100644 --- a/scribe.js +++ b/scribe.js @@ -48,22 +48,14 @@ * Save logs and options. * * @param {Console2} console2 A Console2 instance - * @param {Object} opt LogWriter options * @param {LogWriter} logWriter A LogWriter instance */ - var listenOnConsole = function (console2, opt, logWriter) { - - if (logsFolder.indexOf(opt.rootPath || scribeOpt.rootPath) > -1) { - throw new Error('Folder ' + (opt.rootPath || scribeOpt.rootPath) + ' already in use'); - } else { - logsFolder.push(opt.rootPath || scribeOpt.rootPath); - } + var listenOnConsole = function (console2, logWriter) { //On new log, save it console2.on('new', function (log) { logWriter.save(log, { - rootPath : opt.rootPath || scribeOpt.rootPath, logger : log.opt }); @@ -72,27 +64,20 @@ //On new logger, save its options console2.on('newLogger', function (logger, loggerOpt) { - logWriter.saveOpt(loggerOpt, { - rootPath : opt.rootPath || scribeOpt.rootPath - }); + logWriter.saveOpt(loggerOpt); }); }; + //Create a default console2 and attach it to process if (scribeOpt.createDefaultConsole) { - //Create a default console2 and attach it to process process.console = new Console2(); - logsFolder.push(scribeOpt.rootPath); - listenOnConsole( process.console, - { - rootPath : scribeOpt.rootPath - }, - new LogWriter() + new LogWriter(scribeOpt.rootPath) ); } @@ -119,10 +104,14 @@ if (config.logWriter !== false) { //if config.logWriter is false, don't save logs + var rootPath = config.logWriter + ? config.logWriter.rootPath || scribeOpt.rootPath + : scribeOpt.rootPath + ; + listenOnConsole( console, - config.logWriter || {}, - logWriter || new LogWriter() + logWriter || new LogWriter(rootPath) ); }