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

202 lines (201 loc) 6.54 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var appender_1 = require("./appender"); var console_appender_1 = require("./appender/console.appender"); var log_level_1 = require("./const/log.level"); var logger_1 = require("./logger"); var logger_2 = require("./logger/logger"); var utility_1 = require("./util/utility"); var virtual_console_1 = require("./util/virtual.console"); /** * The default appenders that should be included if no appenders are specified * @const */ var _DEFAULT_APPENDERS = (function () { return [console_appender_1.ConsoleAppender]; })(); var _DEFAULT_PATTERN_LAYOUT = '%d [%p] %c - %m'; /** * The default configuration for log4js2. If no configuration is specified, then this * configuration will be injected * @const */ var _DEFAULT_CONFIG = (function () { return ({ appenders: _DEFAULT_APPENDERS, loggers: [{ level: log_level_1.LogLevel.ERROR }], layout: '%d [%p] %c - %m' }); })(); /** @type {?IConfiguration} */ var _configuration = null; /** * Gets the appenders for the level and layout * * @private * @function * * @param {ILoggerConfiguration} logConfig * * @returns {Array} */ var _getAppendersForLogger = function (logConfig) { var appenderList = []; appender_1.getLoggerAppenderInstances(logConfig.appenders).forEach(function (appenderWrapper) { appenderWrapper.appender.setLogLevel(logConfig.level); appenderWrapper.appender.setLayout(logConfig.layout); appenderList.push(appenderWrapper); }); return appenderList; }; /** * Configures the loggers * * @private * @function * * @param {IConfiguration} config */ var _configureLoggers = function (config) { var loggers = config.loggers; var hasMain = false; if (utility_1.isArray(loggers)) { loggers.forEach(function (logger) { logger.tag = logger.tag || logger_1.MAIN_LOGGER; hasMain = hasMain || logger.tag === logger_1.MAIN_LOGGER; if (!logger.layout || typeof logger.layout !== 'string') { logger.layout = config.layout; } logger.layout = logger.layout || _DEFAULT_PATTERN_LAYOUT; logger.level = logger.level || config.level || log_level_1.LogLevel.ERROR; logger_1.addLogger(logger.tag, new logger_2.Logger(logger.tag, _getAppendersForLogger(logger))); }); } else { loggers = []; } if (!hasMain) { var mainLoggerConfig = { tag: logger_1.MAIN_LOGGER, level: config.level || log_level_1.LogLevel.ERROR, layout: config.layout || _DEFAULT_PATTERN_LAYOUT, }; loggers.push(mainLoggerConfig); logger_1.addLogger(logger_1.MAIN_LOGGER, new logger_2.Logger(logger_1.MAIN_LOGGER, _getAppendersForLogger(mainLoggerConfig))); } return __assign({}, config, { loggers: loggers }); }; /** * Configures appenders * * @private * @function * * @param {IConfiguration} config */ var _configureAppenders = function (config) { var appenders = config.appenders; if (!utility_1.isArray(appenders)) { appenders = _DEFAULT_APPENDERS; } var result = appenders .map(function (value) { var appender; var appenderConfig; if (typeof value === 'string') { appender = appender_1.getAppender(value); appenderConfig = { name: appender_1.getAppenderName(appender), appender: appender }; } else if (value.appender) { if (typeof value.appender === 'string') { appender = appender_1.getAppender(value.appender); } else { appender = appender_1.registerAppender(value.appender); } appenderConfig = __assign({}, value, { name: value.name || appender_1.getAppenderName(appender), appender: appender }); } else if (value.prototype.append) { appender = appender_1.registerAppender(value); appenderConfig = { name: appender_1.getAppenderName(appender), appender: appender }; } else { throw new Error('Invalid appender: \'' + value + '\''); } appender_1.setLoggerAppenderConfig(appenderConfig.name, appenderConfig); return appenderConfig; }); return __assign({}, config, { appenders: result }); }; /** * Configures the logger * * @function * @params {IConfiguration} config */ function configure(config) { // set the default layout if (!config.layout) { config.layout = _DEFAULT_PATTERN_LAYOUT; } // configure the appenders config = _configureAppenders(config); // configure the loggers config = _configureLoggers(config); _configuration = config; if (config.virtualConsole !== false) { virtual_console_1.getVirtualConsole(logger_1.getLogger(logger_1.MAIN_LOGGER, _getLoggerConfiguration(logger_1.MAIN_LOGGER))); } else { virtual_console_1.useVirtualConsole(false); } } exports.configure = configure; exports.getLogger = function (context) { if (!_configuration) { configure(_DEFAULT_CONFIG); } var logContext = _determineContext(context); var loggerConfig = _getLoggerConfiguration(logContext) || _getLoggerConfiguration(logger_1.MAIN_LOGGER); return logger_1.getLogger(logContext, loggerConfig); }; function _getLoggerConfiguration(context) { return _configuration.loggers.filter(function (value) { return value.tag === context; })[0]; } function _determineContext(context) { // determine the context if (typeof context === 'string') { return context; } if (typeof context === 'function') { return utility_1.getFunctionName(context); } else if (typeof context === 'object') { context = utility_1.getFunctionName(context.constructor); if (context === 'Object') { return 'anonymous'; } else { return context; } } else { return logger_1.MAIN_LOGGER; } }