monolog
Version:
Log with Monolog
190 lines (145 loc) • 4.42 kB
JavaScript
// Generated by CoffeeScript 1.6.3
"use strict";
var Logger, events, util;
util = require('util');
events = require('events');
/*
Monolog log channel
It contains a stack of Handlers and a stack of Processors.
and uses them to kstore records that are added to it.
*/
Logger = (function() {
util.inherits(Logger, events.EventEmitter);
Logger.LOG = "log";
Logger.DEBUG = 100;
Logger.INFO = 200;
Logger.NOTICE = 250;
Logger.WARNING = 300;
Logger.ERROR = 400;
Logger.CRITICAL = 500;
Logger.ALERT = 550;
Logger.EMERGENCY = 600;
Logger.API = 1;
Logger.levels = {
100: 'DEBUG',
200: 'INFO',
250: 'NOTICE',
300: 'WARNING',
400: 'ERROR',
500: 'CRITICAL',
550: 'ALERT',
600: 'EMERGENCY'
};
function Logger(name, handlers, processors) {
this.name = name != null ? name : "";
this.handlers = handlers != null ? handlers : [];
this.processors = processors != null ? processors : [];
}
Logger.prototype.getName = function() {
return this.name;
};
Logger.prototype.pushHandler = function(handler) {
this.handlers.unshift(handler);
return this;
};
Logger.prototype.popHandler = function() {
return this.handlers.pop();
};
Logger.prototype.pushProcessor = function(processor) {
this.processors.unshift(processor);
return this;
};
Logger.prototype.popProcessor = function() {
return this.processors.pop();
};
Logger.prototype.addRecord = function(level, message, context) {
var handler, handlerKey, i, processor, record, _i, _j, _len, _len1, _ref, _ref1,
_this = this;
record = {
message: message,
context: context,
level: level,
level_name: Logger.levels[level] || 100,
channel: this.name,
datetime: new Date,
extra: {
toString: function() {
return '[object Extra]';
}
}
};
handlerKey = null;
_ref = this.handlers;
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
handler = _ref[i];
if (handler.isHandling(record)) {
handlerKey = i;
break;
}
}
if (handlerKey === null) {
return false;
}
_ref1 = this.processors;
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
processor = _ref1[_j];
record = processor(record);
}
while (this.handlers[handlerKey] && false === this.handlers[handlerKey].handle(record, function(err, res, record, handler) {
return _this.emit(Logger.LOG, err, res, record, handler);
})) {
handlerKey++;
}
return true;
};
Logger.prototype.debug = function(message, context) {
return this.addRecord(Logger.DEBUG, message, context);
};
Logger.prototype.info = function(message, context) {
return this.addRecord(Logger.INFO, message, context);
};
Logger.prototype.notice = function(message, context) {
return this.addRecord(Logger.NOTICE, message, context);
};
Logger.prototype.warning = function(message, context) {
return this.addRecord(Logger.WARNING, message, context);
};
Logger.prototype.error = function(message, context) {
return this.addRecord(Logger.ERROR, message, context);
};
Logger.prototype.critical = function(message, context) {
return this.addRecord(Logger.CRITICAL, message, context);
};
Logger.prototype.alert = function(message, context) {
return this.addRecord(Logger.ALERT, message, context);
};
Logger.prototype.emergency = function(message, context) {
return this.addRecord(Logger.EMERGENCY, message, context);
};
Logger.prototype.isHandling = function(level) {
var record;
record = {
level: level
};
return this.handlers.some(function(handler) {
return handler.isHandling(record);
});
};
Logger.prototype.log = function(level, message, context) {
if (typeof level === "string") {
level = Logger[level];
}
return this.addRecord(level, message, context);
};
Logger.prototype.crit = Logger.prototype.critical;
Logger.prototype.err = Logger.prototype.error;
Logger.prototype.emer = Logger.prototype.emergency;
Logger.prototype.warn = Logger.prototype.warning;
Logger.prototype.addProcessor = Logger.prototype.pushProcessor;
Logger.prototype.addHandler = Logger.prototype.pushHandler;
return Logger;
})();
module.exports = Logger;
/*
//@ sourceMappingURL=Logger.map
*/