Attach rootPath to the instance after checking if already in use

This commit is contained in:
Guillaume Wuip 2014-10-29 13:56:24 +01:00
parent ed3c0f5e1c
commit cc7479eb9c
2 changed files with 37 additions and 34 deletions

View file

@ -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) {

View file

@ -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)
);
}