UNPKG

typescript-logging

Version:

Library for logging, written in typescript, can be used by normal es5+ javascript as well.

109 lines 5.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var DataStructures_1 = require("../../utils/DataStructures"); var LoggerOptions_1 = require("../LoggerOptions"); var ConsoleLoggerImpl_1 = require("./ConsoleLoggerImpl"); var MessageBufferLoggerImpl_1 = require("./MessageBufferLoggerImpl"); var AbstractLogger_1 = require("./AbstractLogger"); var LogGroupRuntimeSettings_1 = require("./LogGroupRuntimeSettings"); var LoggerFactoryImpl = (function () { function LoggerFactoryImpl(name, options) { this._loggers = new DataStructures_1.SimpleMap(); this._logGroupRuntimeSettingsIndexed = []; this._loggerToLogGroupSettings = new DataStructures_1.SimpleMap(); this._name = name; this.configure(options); } LoggerFactoryImpl.prototype.configure = function (options) { this._options = options; // Close any current open loggers. this.closeLoggers(); this._loggerToLogGroupSettings.clear(); this._logGroupRuntimeSettingsIndexed = []; var logGroupRules = this._options.logGroupRules; /* tslint:disable:prefer-for-of */ for (var i = 0; i < logGroupRules.length; i++) { this._logGroupRuntimeSettingsIndexed.push(new LogGroupRuntimeSettings_1.LogGroupRuntimeSettings(logGroupRules[i])); } /* tslint:enable:prefer-for-of */ }; LoggerFactoryImpl.prototype.getLogger = function (named) { if (!this._options.enabled) { throw new Error("LoggerFactory is not enabled, please check your options passed in"); } var logger = this._loggers.get(named); if (typeof logger !== "undefined") { return logger; } // Initialize logger with appropriate level logger = this.loadLogger(named); this._loggers.put(named, logger); return logger; }; LoggerFactoryImpl.prototype.isEnabled = function () { return this._options.enabled; }; LoggerFactoryImpl.prototype.closeLoggers = function () { this._loggers.forEachValue(function (logger) { // We can only close if AbstractLogger is used (our loggers, but user loggers may not extend it, even though unlikely). if (logger instanceof AbstractLogger_1.AbstractLogger) { logger.close(); } }); this._loggers.clear(); }; LoggerFactoryImpl.prototype.getName = function () { return this._name; }; LoggerFactoryImpl.prototype.getLogGroupRuntimeSettingsByIndex = function (idx) { if (idx >= 0 && idx < this._logGroupRuntimeSettingsIndexed.length) { return this._logGroupRuntimeSettingsIndexed[idx]; } return null; }; LoggerFactoryImpl.prototype.getLogGroupRuntimeSettingsByLoggerName = function (nameLogger) { var result = this._loggerToLogGroupSettings.get(nameLogger); if (typeof result === "undefined") { return null; } return result; }; LoggerFactoryImpl.prototype.getLogGroupRuntimeSettings = function () { return this._logGroupRuntimeSettingsIndexed.slice(0); }; LoggerFactoryImpl.prototype.loadLogger = function (named) { var logGroupRules = this._options.logGroupRules; for (var i = 0; i < logGroupRules.length; i++) { var logGroupRule = logGroupRules[i]; if (logGroupRule.regExp.test(named)) { var logGroupRuntimeSettings = this._logGroupRuntimeSettingsIndexed[i]; var logger = void 0; switch (logGroupRule.loggerType) { case LoggerOptions_1.LoggerType.Console: logger = new ConsoleLoggerImpl_1.ConsoleLoggerImpl(named, logGroupRuntimeSettings); break; case LoggerOptions_1.LoggerType.MessageBuffer: logger = new MessageBufferLoggerImpl_1.MessageBufferLoggerImpl(named, logGroupRuntimeSettings); break; case LoggerOptions_1.LoggerType.Custom: if (logGroupRule.callBackLogger != null) { logger = logGroupRule.callBackLogger(named, logGroupRuntimeSettings); } else { throw new Error("Cannot create a custom logger, custom callback is null"); } break; default: throw new Error("Cannot create a Logger for LoggerType: " + logGroupRule.loggerType); } // For a new logger map it by its name this._loggerToLogGroupSettings.put(named, logGroupRuntimeSettings); return logger; } } throw new Error("Failed to find a match to create a Logger for: " + named); }; return LoggerFactoryImpl; }()); exports.LoggerFactoryImpl = LoggerFactoryImpl; //# sourceMappingURL=LoggerFactoryImpl.js.map