@log4js2/core
Version:
log4js2 is a fast and lightweight logging library that enables logging flexibility within JavaScript/TypeScript applications, similar to Apache's [Log4j2 library](https://logging.apache.org/log4j/2.x/). It can also serve as a drop-in replacement for log4
105 lines (104 loc) • 3.48 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var utility_1 = require("../util/utility");
var appender_wrapper_1 = require("./appender.wrapper");
var log_appender_1 = require("./log.appender");
var _appenderMethods = new Set();
_appenderMethods.add('append');
_appenderMethods.add('isActive');
_appenderMethods.add('setLogLevel');
_appenderMethods.add('setLayout');
_appenderMethods.add('getLayout');
_appenderMethods.add('format');
var _appenders = new Map();
var _registeredLoggerAppenders = new Map();
/**
* Validates that the appender
*
* @private
* @function
*
* @params {APPENDER} appender
* @throws {Error} if the appender is invalid
*/
var _validateAppender = function (appender) {
// if we are running ES6, we can make sure it extends LogAppender
// otherwise, it must be a function
if (!(appender instanceof log_appender_1.LogAppender)) {
return;
}
// ensure that the appender methods are present (and are functions)
_appenderMethods.forEach(function (element) {
if (!appender.prototype[element] || !(appender.prototype[element] instanceof Function)) {
throw new Error("Invalid appender: missing/invalid method: " + element);
}
});
};
exports.getAppenderName = function (appender) { return appender.name || utility_1.getFunctionName(appender); };
/**
* Adds an appender to the appender queue
*
* @function
*
* @param {LogAppender} appender
* @param {string} name
*/
exports.addAppender = function (appender, name) {
_validateAppender(appender);
var appenderName = name || exports.getAppenderName(appender);
// only put the appender into the set if it doesn't exist already
if (!_appenders.has(appenderName)) {
_appenders.set(appenderName, appender);
}
return appender;
};
/**
* Registers an appender
*
* @param {Newable} appender
*/
exports.registerAppender = function (appender) {
var name = exports.getAppenderName(appender);
if (_appenders.has(name)) {
exports.addAppender(appender);
}
_appenders.set(name, appender);
return appender;
};
/**
* Gets the appender with the specified name
*
* @param name
*/
exports.getAppender = function (name) { return _appenders.get(name); };
/**
* Gets the appender instances. If the appenders parameter is set, then it will only fetch those within the array, otherwise return all
*
* @param {string[]} appenders
*/
exports.getLoggerAppenderInstances = function (appenders) {
if (appenders && appenders.length > 0) {
return appenders.map(function (value) {
if (_registeredLoggerAppenders.has(value)) {
var appenderConfig = _registeredLoggerAppenders.get(value);
return new appender_wrapper_1.AppenderWrapper(appenderConfig.appender, appenderConfig);
}
throw new Error("Invalid appender reference '" + value + "'");
});
}
else {
var result_1 = [];
_registeredLoggerAppenders.forEach(function (appenderConfig) {
return result_1.push(new appender_wrapper_1.AppenderWrapper(appenderConfig.appender, appenderConfig));
});
return result_1;
}
};
/**
* Sets the appender configuration for a specified appender name
*
* @param {string} appenderName
* @param {IAppenderConfiguration} config
*/
exports.setLoggerAppenderConfig = function (appenderName, config) {
_registeredLoggerAppenders.set(appenderName, config);
};