2014-05-03 21:26:35 +00:00
|
|
|
/**
|
|
|
|
* Copyright 2014 IBM Corp.
|
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
**/
|
|
|
|
|
|
|
|
var util = require("util");
|
|
|
|
var EventEmitter = require("events").EventEmitter;
|
|
|
|
|
2015-01-29 13:48:50 +00:00
|
|
|
var logLevel;
|
|
|
|
var metricsOn;
|
|
|
|
|
|
|
|
var levels = {
|
|
|
|
"fatal" : 10,
|
|
|
|
"error" : 20,
|
|
|
|
"warn" : 30,
|
|
|
|
"info" : 40,
|
|
|
|
"debug" : 50,
|
|
|
|
"trace" : 60
|
|
|
|
}
|
|
|
|
|
2014-05-03 21:26:35 +00:00
|
|
|
var logHandlers = [];
|
|
|
|
|
|
|
|
var ConsoleLogHandler = new EventEmitter();
|
|
|
|
ConsoleLogHandler.on("log",function(msg) {
|
2015-01-29 13:48:50 +00:00
|
|
|
if ((msg.level === 'metric')) {
|
|
|
|
if (metricsOn) {
|
|
|
|
util.log("["+msg.level+"] ["+msg.event+":"+ msg.nodeid+":"+ msg.msguuid+"]"+metrics);
|
|
|
|
}
|
|
|
|
} else if (shouldReportMessage(msg.level)) {
|
2014-05-03 21:26:35 +00:00
|
|
|
util.log("["+msg.level+"] ["+msg.type+":"+(msg.name||msg.id)+"] "+msg.msg);
|
2015-01-29 13:48:50 +00:00
|
|
|
}
|
2014-05-03 21:26:35 +00:00
|
|
|
});
|
|
|
|
|
2015-01-29 13:48:50 +00:00
|
|
|
function shouldReportMessage(msglevel) {
|
|
|
|
if (((msglevel === 'fatal') && (logLevel === 10)) ||
|
|
|
|
((msglevel === 'error') && (logLevel >= 20)) ||
|
|
|
|
((msglevel === 'warn') && (logLevel >= 30)) ||
|
|
|
|
((msglevel === 'info') && (logLevel >= 40)) ||
|
|
|
|
((msglevel === 'debug') && (logLevel >= 50)) ||
|
|
|
|
((msglevel === 'trace') && (logLevel === 60))) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-05-03 21:26:35 +00:00
|
|
|
var log = module.exports = {
|
2015-01-29 13:48:50 +00:00
|
|
|
|
|
|
|
init: function(settings) {
|
|
|
|
if (settings.logLevel) {
|
|
|
|
var levelNames = Object.keys(levels);
|
|
|
|
levelNames.forEach(function(levelName) {
|
|
|
|
if (levelName === settings.logLevel) {
|
|
|
|
logLevel =levels[levelName];
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
if (!logLevel) {
|
|
|
|
// handles case if someone has put in garbage for the log level
|
|
|
|
logLevel = 40;
|
|
|
|
}
|
|
|
|
if (settings.metricsOn) {
|
|
|
|
metricsOn = settings.metricsOn
|
|
|
|
} else {
|
|
|
|
metricsOn = false;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2014-05-03 21:26:35 +00:00
|
|
|
addHandler: function(func) {
|
2014-05-06 12:05:11 +00:00
|
|
|
logHandlers.push(func);
|
2014-05-03 21:26:35 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
log: function(msg) {
|
2015-01-27 14:41:20 +00:00
|
|
|
msg.timestamp = Date.now();
|
2014-07-02 15:31:02 +00:00
|
|
|
logHandlers.forEach(function(handler) {
|
|
|
|
handler.emit("log",msg);
|
2014-07-01 22:46:25 +00:00
|
|
|
});
|
2014-05-03 21:26:35 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
log.addHandler(ConsoleLogHandler);
|