Scribe.js/scribe.js

140 lines
3.8 KiB
JavaScript
Raw Normal View History

2014-10-26 12:01:44 +01:00
/*jshint -W020 */
(function () {
'use strict';
2014-10-29 11:29:39 +01:00
var Console2 = require('./lib/console2.js'),
LogWriter = require('./lib/logWriter.js');
2014-10-26 12:01:44 +01:00
/**
* logsFolder
*
* Store current logs folder
* @type {Array}
*/
var logsFolder = [];
2014-10-26 12:01:44 +01:00
/**
* scribe
*
* Scribe.js module
*
2014-10-29 11:29:39 +01:00
* @param {Object} scribeOpt Optional options
* @param {String} scribe.rootPath Logs folder. Default 'logs'
* @param {Boolean} scribeOpt.createDefaultConsole Should scribe attach a fresh Console2
* to process.console ? Default true.
2014-10-26 12:01:44 +01:00
*
* @return {Object}
* @return {Function} console Get a console
* @return {Constructor} Console2 Console2 constructor
*/
2014-10-29 11:29:39 +01:00
var scribe = function (scribeOpt) {
2014-10-26 12:01:44 +01:00
//Scribe options
2014-10-29 11:29:39 +01:00
if (!scribeOpt) {
scribeOpt = {};
2014-10-26 12:01:44 +01:00
}
2014-10-29 11:29:39 +01:00
scribeOpt.rootPath = scribeOpt.rootPath || 'logs';
scribeOpt.createDefaultConsole = scribeOpt.createDefaultConsole !== false;
/**
* listenOnConsole
*
* Listen on console2 events 'new' and 'newLogger'
* Save logs and options.
*
* @param {Console2} console2 A Console2 instance
* @param {LogWriter} logWriter A LogWriter instance
*/
var listenOnConsole = function (console2, logWriter) {
2014-10-29 11:29:39 +01:00
//On new log, save it
console2.on('new', function (log) {
logWriter.save(log, {
logger : log.opt
});
});
//On new logger, save its options
console2.on('newLogger', function (logger, loggerOpt) {
logWriter.saveOpt(loggerOpt);
2014-10-29 11:29:39 +01:00
});
};
2014-10-26 12:01:44 +01:00
//Create a default console2 and attach it to process
2014-10-29 11:29:39 +01:00
if (scribeOpt.createDefaultConsole) {
2014-10-26 12:01:44 +01:00
process.console = new Console2();
2014-10-29 11:29:39 +01:00
listenOnConsole(
process.console,
new LogWriter(scribeOpt.rootPath)
2014-10-29 11:29:39 +01:00
);
2014-10-26 12:01:44 +01:00
}
return {
2014-10-29 11:29:39 +01:00
/**
* console
*
* Create a new console
*
* @param {Object} config Config options
* @param {?Object} config.console Console2 options
* @param {?Object} config.logWriter LogWriter options.
* If false, Scribe won't save logs on disk.
*
* @param {LogWriter} logWriter Optional. A custom logWriter instance
*
* @return {Console2} A new Console2 instance
*/
console : function (config, logWriter) {
2014-10-26 12:01:44 +01:00
var console = new Console2(config.console || {});
2014-10-29 11:29:39 +01:00
if (config.logWriter !== false) { //if config.logWriter is false, don't save logs
var rootPath = config.logWriter
? config.logWriter.rootPath || scribeOpt.rootPath
: scribeOpt.rootPath
;
2014-10-29 11:29:39 +01:00
listenOnConsole(
console,
logWriter || new LogWriter(rootPath)
2014-10-29 11:29:39 +01:00
);
}
2014-10-26 12:01:44 +01:00
return console;
},
2014-10-29 11:29:39 +01:00
/**
* Console2
*
* @constructor
*/
Console2 : Console2,
/**
* LogWriter
*
* @constructor
*/
LogWriter : LogWriter
2014-10-26 12:01:44 +01:00
};
};
module.exports = scribe;
}());