UNPKG

@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
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); };