You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
2.2 KiB
136 lines
2.2 KiB
// Copyright 2015, Yahoo! Inc.
|
|
// Copyrights licensed under the Mit License. See the accompanying LICENSE file for terms.
|
|
|
|
var log4js = require('log4js');
|
|
var path = require('path');
|
|
var _ = require('underscore');
|
|
|
|
var _level = 'INFO';
|
|
|
|
var _buffered = true;
|
|
var _buffer = [];
|
|
|
|
log4js.setGlobalLogLevel(_level);
|
|
|
|
/**
|
|
* Arguments logger with custom functionality
|
|
*
|
|
* @method _argumentLogger
|
|
* @param {Logger} logger
|
|
* @return {Logger}
|
|
* @private
|
|
*/
|
|
var _argumentLogger = function (logger) {
|
|
|
|
if (!logger.argumented) {
|
|
|
|
['trace', 'debug', 'info', 'warn', 'error'].forEach(function (item) {
|
|
var oldFunction = logger[item];
|
|
|
|
logger[item] = function () {
|
|
var args = Array.prototype.slice.call(arguments);
|
|
|
|
for (var i = 0; i < args.length; i++) {
|
|
if (_.isObject(args[i])) {
|
|
args[i] = JSON.stringify(args[i], null, 4);
|
|
}
|
|
}
|
|
|
|
if (_buffered) {
|
|
_buffer.push({
|
|
logger: logger, level: item, args: args
|
|
});
|
|
} else {
|
|
oldFunction.apply(logger, args);
|
|
}
|
|
};
|
|
});
|
|
|
|
logger.argumented = true;
|
|
}
|
|
|
|
return logger;
|
|
};
|
|
|
|
/**
|
|
* Logger object
|
|
*
|
|
* @class log
|
|
*
|
|
* @property log
|
|
* @property trace
|
|
* @property debug
|
|
* @property info
|
|
* @property warn
|
|
* @property error
|
|
*/
|
|
|
|
/**
|
|
* Logger management object
|
|
*
|
|
* @class log
|
|
* @type {object}
|
|
*/
|
|
var log = {
|
|
|
|
/**
|
|
* Get logging level
|
|
*
|
|
* @method getLevel
|
|
* @return {string}
|
|
*/
|
|
getLevel: function () {
|
|
return _level;
|
|
},
|
|
|
|
/**
|
|
* Set logging level
|
|
*
|
|
* @method setLevel
|
|
* @param {string} level
|
|
*/
|
|
setLevel: function (level) {
|
|
_level = level;
|
|
log4js.setGlobalLogLevel(_level);
|
|
},
|
|
|
|
/**
|
|
* Get internal logger
|
|
*
|
|
* @method getInternalLogger
|
|
* @private
|
|
* @return {*}
|
|
*/
|
|
_getInternalLogger: function () {
|
|
return log4js;
|
|
},
|
|
|
|
/**
|
|
* Return logger for a specific file
|
|
*
|
|
* @method getLogger
|
|
* @param {string} identifier
|
|
* @return {Logger}
|
|
*/
|
|
getLogger: function (identifier) {
|
|
return _argumentLogger(log4js.getLogger(identifier));
|
|
},
|
|
|
|
/**
|
|
* Flushes all buffered entries
|
|
*
|
|
* @method flush
|
|
*/
|
|
flush: function () {
|
|
_buffered = false;
|
|
|
|
// Trigger all the entries
|
|
_buffer.forEach(function (entry) {
|
|
entry.logger[entry.level].apply(entry.logger, entry.args);
|
|
});
|
|
_buffer = [];
|
|
}
|
|
};
|
|
|
|
module.exports = log;
|