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