|
@@ -7,6 +7,7 @@ var LoggerSystem = class LoggerSystem {
|
|
constructor() {
|
|
constructor() {
|
|
this.adapters = [];
|
|
this.adapters = [];
|
|
this.writers = {};
|
|
this.writers = {};
|
|
|
|
+ this.loggerLevels = {};
|
|
// Prepare TAGS
|
|
// Prepare TAGS
|
|
|
|
|
|
// Global log count? per log
|
|
// Global log count? per log
|
|
@@ -28,22 +29,51 @@ var LoggerSystem = class LoggerSystem {
|
|
this.adapters = [];
|
|
this.adapters = [];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ solveLevels(logger,levels) {
|
|
|
|
+
|
|
|
|
+ // If emptu all ok
|
|
|
|
+ for(var k in levels) {
|
|
|
|
+ if(logger.name.match(new RegExp("^" + k + "$"))) {
|
|
|
|
+ return levels[k];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
base(logger,TAG,msg) {
|
|
base(logger,TAG,msg) {
|
|
var self = this;
|
|
var self = this;
|
|
- this.adapters.forEach((e) => {
|
|
|
|
- if(e.filterFunc(TAG)) {
|
|
|
|
- var fmt = e.logFmt || this.logFmt;
|
|
|
|
- e.writers.forEach(function(w) {
|
|
|
|
|
|
+ var sTAG = LoggerSystem.TAGS[TAG];
|
|
|
|
+ var gLevels = this.solveLevels(logger,this.loggerLevels);
|
|
|
|
+
|
|
|
|
+ for(var a of this.adapters) {
|
|
|
|
+ var aLevels = this.solveLevels(logger,a.loggerLevels);
|
|
|
|
+ if(aLevels && !aLevels.includes(sTAG)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if(gLevels && !gLevels.includes(sTAG)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ // is performance good?
|
|
|
|
+ // Check if this adapter has conf
|
|
|
|
+ if(a.filterFunc(TAG)) {
|
|
|
|
+ a.writers.forEach(function(w) {
|
|
|
|
+ var fmt = a.fmt;
|
|
|
|
+ if(fmt==undefined ) {
|
|
|
|
+ if(w.fmt != undefined && w.fmt[sTAG] != undefined) {
|
|
|
|
+ fmt = w.fmt[LoggerSystem.TAGS[TAG]];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
var outmsg = self.format(TAG,w.count,logger.name,w.lastTime,logger.lastTime,fmt,msg);
|
|
var outmsg = self.format(TAG,w.count,logger.name,w.lastTime,logger.lastTime,fmt,msg);
|
|
|
|
|
|
// Strip ansi if any
|
|
// Strip ansi if any
|
|
w.doLog(outmsg);
|
|
w.doLog(outmsg);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
- });
|
|
|
|
|
|
+ };
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ // Improve and clean this
|
|
format(TAG,count,name,lastDate, lastLoggerDate, fmt, msg) {
|
|
format(TAG,count,name,lastDate, lastLoggerDate, fmt, msg) {
|
|
|
|
+ if(fmt == undefined) fmt = this.logFmt; // Overall default format
|
|
var now = new Date();
|
|
var now = new Date();
|
|
var dateStr = (("0" + now.getDate()).slice(-2)
|
|
var dateStr = (("0" + now.getDate()).slice(-2)
|
|
+ "-" + ("0" +now.getMonth()).slice(-2)
|
|
+ "-" + ("0" +now.getMonth()).slice(-2)
|
|
@@ -67,7 +97,7 @@ var LoggerSystem = class LoggerSystem {
|
|
var s = fmt;
|
|
var s = fmt;
|
|
s = s.replace(/%c/g,count);
|
|
s = s.replace(/%c/g,count);
|
|
s = s.replace(/%m/g,msg);
|
|
s = s.replace(/%m/g,msg);
|
|
- s = s.replace(/%l/g,require('./logger').logTags[TAG]);
|
|
|
|
|
|
+ s = s.replace(/%l/g,LoggerSystem.TAGS[TAG]);
|
|
s = s.replace(/%n/g,name);
|
|
s = s.replace(/%n/g,name);
|
|
s = s.replace(/%e/g,"+" +dateDiffStr);
|
|
s = s.replace(/%e/g,"+" +dateDiffStr);
|
|
s = s.replace(/%E/g,"+" +ldateDiffStr);
|
|
s = s.replace(/%E/g,"+" +ldateDiffStr);
|
|
@@ -92,20 +122,14 @@ var LoggerSystem = class LoggerSystem {
|
|
for(var i = 0;i<pad;i++) { s+=" "; }
|
|
for(var i = 0;i<pad;i++) { s+=" "; }
|
|
s+= " "+logSplit[1];
|
|
s+= " "+logSplit[1];
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
|
|
return s;
|
|
return s;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+LoggerSystem.TAGS = ["ERROR","WARN","INFO","VERBOSE"];
|
|
|
|
+
|
|
module.exports = LoggerSystem;
|
|
module.exports = LoggerSystem;
|
|
|
|
|
|
|
|
|