mirror of
https://github.com/mathew-kurian/Scribe.js
synced 2025-09-01 14:31:26 +00:00
Attach rootPath to the instance after checking if already in use
This commit is contained in:
parent
ed3c0f5e1c
commit
cc7479eb9c
2 changed files with 37 additions and 34 deletions
|
@ -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) {
|
||||
|
|
31
scribe.js
31
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)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue