change approach again
This commit is contained in:
184
node_modules/simple-node-logger/lib/Logger.js
generated
vendored
Normal file
184
node_modules/simple-node-logger/lib/Logger.js
generated
vendored
Normal file
@ -0,0 +1,184 @@
|
||||
/**
|
||||
* @class Logger
|
||||
*
|
||||
* @author: darryl.west@raincitysoftware.com
|
||||
* @created: 7/5/14 6:28 PM
|
||||
*/
|
||||
|
||||
const Logger = function(options) {
|
||||
'use strict';
|
||||
|
||||
const logger = this,
|
||||
pid = options.pid || process.pid,
|
||||
errorEventName = options.errorEventName,
|
||||
stats = new Map();
|
||||
|
||||
let domain = options.domain,
|
||||
category = options.category,
|
||||
level = options.level || Logger.DEFAULT_LEVEL,
|
||||
levels = options.levels || Logger.STANDARD_LEVELS,
|
||||
currentLevel = levels.indexOf( level ),
|
||||
appenders = options.appenders || [];
|
||||
|
||||
// helper method
|
||||
const isLevelAt = function(lvl) {
|
||||
const idx = levels.indexOf( lvl );
|
||||
|
||||
return idx >= currentLevel;
|
||||
};
|
||||
|
||||
/**
|
||||
* log the statement message
|
||||
*
|
||||
* @param level the level of this message (label, i.e, info, warn, etc)
|
||||
* @param msg
|
||||
*/
|
||||
this.log = function(level, msg) {
|
||||
const entry = logger.createEntry( level, msg );
|
||||
|
||||
process.nextTick(function() {
|
||||
// write the message to the appenders...
|
||||
appenders.forEach(function(appender) {
|
||||
appender.write( entry );
|
||||
});
|
||||
|
||||
if (level === 'error' && typeof(errorEventName) === 'string') {
|
||||
process.emit(errorEventName, entry);
|
||||
}
|
||||
});
|
||||
|
||||
return entry;
|
||||
};
|
||||
|
||||
/**
|
||||
* create the entry object used to log messages
|
||||
*
|
||||
* @param level - info, debug, etc.
|
||||
* @param messageList - a list of message objects
|
||||
* @returns then entry object
|
||||
*/
|
||||
this.createEntry = function(level, messageList) {
|
||||
const entry = {};
|
||||
|
||||
entry.ts = Date.now();
|
||||
|
||||
entry.pid = pid;
|
||||
if (domain) {
|
||||
entry.domain = domain;
|
||||
}
|
||||
if (category) {
|
||||
entry.category = category;
|
||||
}
|
||||
|
||||
entry.level = level;
|
||||
entry.msg = messageList;
|
||||
|
||||
return entry;
|
||||
};
|
||||
|
||||
/**
|
||||
* set the level
|
||||
*
|
||||
* @param lvl one of the recognized logger levels
|
||||
*/
|
||||
this.setLevel = function(lvl) {
|
||||
currentLevel = levels.indexOf(lvl);
|
||||
level = lvl;
|
||||
appenders.forEach(app => {
|
||||
app.setLevel( lvl );
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* return the current level string
|
||||
*/
|
||||
this.getLevel = function() {
|
||||
return level;
|
||||
};
|
||||
|
||||
/**
|
||||
* set the list of appenders
|
||||
* @param app
|
||||
*/
|
||||
this.setAppenders = function(appenderList) {
|
||||
appenders = appenderList;
|
||||
};
|
||||
|
||||
/**
|
||||
* add an appender to the list
|
||||
*
|
||||
* @param appender - implements write method
|
||||
*/
|
||||
this.addAppender = function(appender) {
|
||||
appenders.push( appender );
|
||||
};
|
||||
|
||||
/**
|
||||
* remove the appender using the type name
|
||||
*/
|
||||
this.removeAppender = function(typeName) {
|
||||
throw new Error(`remove appender ${typeName} is not implemented yet...`);
|
||||
};
|
||||
|
||||
this.getAppenders = function() {
|
||||
return appenders;
|
||||
};
|
||||
|
||||
this.isDebug = function() {
|
||||
return isLevelAt( 'debug' );
|
||||
};
|
||||
|
||||
this.isInfo = function() {
|
||||
return isLevelAt( 'info' );
|
||||
};
|
||||
|
||||
/**
|
||||
* return the status map with log counts for each level
|
||||
*/
|
||||
this.getStats = function() {
|
||||
return stats;
|
||||
};
|
||||
|
||||
/**
|
||||
* return the category name
|
||||
*/
|
||||
this.getCategory = function() {
|
||||
return category;
|
||||
};
|
||||
|
||||
/**
|
||||
* return the domain name
|
||||
*/
|
||||
this.getDomain = function() {
|
||||
return domain;
|
||||
};
|
||||
|
||||
// now initialize the methods for the standard levels
|
||||
const init = function() {
|
||||
levels.forEach(function(lvl) {
|
||||
stats.set(lvl, 0);
|
||||
logger[ lvl ] = function() {
|
||||
stats.set(lvl, stats.get(lvl) + 1);
|
||||
if (levels.indexOf( lvl ) >= currentLevel) {
|
||||
const args = Array.prototype.slice.call( arguments );
|
||||
logger.log( lvl, args );
|
||||
}
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
this.__protected = function() {
|
||||
return {
|
||||
pid:pid,
|
||||
domain:domain,
|
||||
category:category
|
||||
};
|
||||
};
|
||||
|
||||
init();
|
||||
};
|
||||
|
||||
Logger.STANDARD_LEVELS = [ 'all', 'trace', 'debug', 'info', 'warn', 'error', 'fatal' ];
|
||||
Logger.DEFAULT_LEVEL = 'info';
|
||||
|
||||
module.exports = Logger;
|
Reference in New Issue
Block a user