123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- var LoggerSystem = require('./system');
- var LogWriter = require('./writer');
- var LogAdapter = require('./adapter');
- var util = require('util');
- var Logger = class Logger {
- constructor(name) {
- this.name = name;
- this.lastTime = process.hrtime();
- this.count = 0;
- }
- base(LVL,args) {
- var msg = args.map(a => (typeof(a) == "object")? util.inspect(a):a).join(" ");
- this.sys.base(this,LVL,msg);
- this.lastTime = process.hrtime();
- this.count++;
- }
- info(...args) {
- this.base(Logger.INFO,args);
- }
- error(...args) {
- this.base(Logger.ERROR,args);
- }
- warn(...args) {
- this.base(Logger.WARN,args);
- }
- verb(...args) {
- this.base(Logger.VERBOSE,args);
- }
- }
- Logger.root = new LoggerSystem();
- // statics
-
- Logger.createLogger = function (name) {
- var logger = new Logger(name);
- logger.sys = Logger.root;
- return logger;
- }
- // By order of importance
- //Logger.logTags = ["ERROR","WARN","INFO","VERBOSE"];
- for( var i in LoggerSystem.TAGS) {
- Logger[LoggerSystem.TAGS[i]] = i;
- }
- // Filter functions
- //
- //
- Logger.le = function(TAG) {
- return function(itag) {
- return itag <= TAG;
- }
- }
- Logger.ge = function(TAG) {
- return function(itag) {
- return itag <= TAG;
- }
- }
- Logger.eq = function(TAG) {
- return function(itag) {
- return itag == TAG;
- }
- };
- Logger.in = function(args) {
- return function(itag) {
- var TAGS = args;
- return TAGS.indexOf(itag) >= 0;
- }
- }
- Logger.reset = function reset() {
- Logger.root.adapters = [];
- }
- Logger.setup = function (conf) {
- var writerInst = [];
- Logger.root.loggerLevels = conf.loggers;
- conf.adapters.forEach(function(ad) {
- var adapterWriter = [];
- ad.writers.forEach(function(e) { // Writer selection
- // Use same or create new, should be stored in Logger somehow
- if(conf.writers[e] == undefined) {
- throw new Error ("Adapter requested an inexistent writer: '" + e + "'");
- }
- if(Logger.root.writers[conf.writers[e].writer] == undefined) {
- throw new Error ("Requested writer: '" + conf.writers[e].writer + "' does not exists in context");
- }
- if(writerInst[e] == undefined) {
- writerInst[e] = new Logger.root.writers[conf.writers[e].writer](conf.writers[e].opts);
- }
-
- if(writerInst[e] != undefined) {
- adapterWriter.push( writerInst[e]);
- };
- })
- var levels = [];
- ad.levels.forEach(function(e) {
- levels.push(Logger[e]);
- });
- var adapter = new LogAdapter(Logger.in(levels),adapterWriter,ad.fmt);
- adapter.loggerLevels = ad.loggers;
- Logger.root.adapter(adapter);
- })
- }
- module.exports = Logger;
|