UNPKG

@vector-im/matrix-bot-sdk

Version:

TypeScript/JavaScript SDK for Matrix bots and appservices

171 lines 5.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extractRequestError = exports.LogService = exports.LogLevel = void 0; const ConsoleLogger_1 = require("./ConsoleLogger"); /** * The log levels to log at. * @category Logging */ class LogLevel { level; sequence; /** * The TRACE channel */ static TRACE = new LogLevel("TRACE", -1); /** * The DEBUG channel */ static DEBUG = new LogLevel("DEBUG", 0); /** * The INFO channel */ static INFO = new LogLevel("INFO", 1); /** * The WARN channel */ static WARN = new LogLevel("WARN", 2); /** * The ERROR channel */ static ERROR = new LogLevel("ERROR", 3); constructor(level, sequence) { this.level = level; this.sequence = sequence; } includes(level) { return level.sequence >= this.sequence; } toString() { return this.level; } static fromString(level, defaultLevel = LogLevel.DEBUG) { if (!level) return defaultLevel; if (level.toUpperCase() === LogLevel.TRACE.level) return LogLevel.TRACE; if (level.toUpperCase() === LogLevel.DEBUG.level) return LogLevel.DEBUG; if (level.toUpperCase() === LogLevel.INFO.level) return LogLevel.INFO; if (level.toUpperCase() === LogLevel.WARN.level) return LogLevel.WARN; if (level.toUpperCase() === LogLevel.ERROR.level) return LogLevel.ERROR; return defaultLevel; } } exports.LogLevel = LogLevel; /** * Service class for logging in the bot-sdk * @category Logging */ class LogService { static logger = new ConsoleLogger_1.ConsoleLogger(); static logLevel = LogLevel.INFO; static mutedModules = []; constructor() { } /** * The level at which the LogService is running. */ static get level() { return this.logLevel; } /** * Sets the log level for this logger. Defaults to DEBUG. * @param {LogLevel} level the new log level */ static setLevel(level) { LogService.logLevel = level || LogLevel.DEBUG; } /** * Sets a new logger for the Log Service * @param {ILogger} logger the new logger */ static setLogger(logger) { LogService.logger = logger; } /** * Mutes a module from the logger. * @param {string} name The module name to mute. */ static muteModule(name) { LogService.mutedModules.push(name); } /** * Logs to the TRACE channel * @param {string} module The module being logged * @param {any[]} messageOrObject The data to log */ static trace(module, ...messageOrObject) { if (!LogService.logLevel.includes(LogLevel.TRACE)) return; if (LogService.mutedModules.includes(module)) return; LogService.logger.trace(module, ...messageOrObject); } /** * Logs to the DEBUG channel * @param {string} module The module being logged * @param {any[]} messageOrObject The data to log */ static debug(module, ...messageOrObject) { if (!LogService.logLevel.includes(LogLevel.DEBUG)) return; if (LogService.mutedModules.includes(module)) return; LogService.logger.debug(module, ...messageOrObject); } /** * Logs to the ERROR channel * @param {string} module The module being logged * @param {any[]} messageOrObject The data to log */ static error(module, ...messageOrObject) { if (!LogService.logLevel.includes(LogLevel.ERROR)) return; if (LogService.mutedModules.includes(module)) return; LogService.logger.error(module, ...messageOrObject); } /** * Logs to the INFO channel * @param {string} module The module being logged * @param {any[]} messageOrObject The data to log */ static info(module, ...messageOrObject) { if (!LogService.logLevel.includes(LogLevel.INFO)) return; if (LogService.mutedModules.includes(module)) return; LogService.logger.info(module, ...messageOrObject); } /** * Logs to the WARN channel * @param {string} module The module being logged * @param {any[]} messageOrObject The data to log */ static warn(module, ...messageOrObject) { if (!LogService.logLevel.includes(LogLevel.WARN)) return; if (LogService.mutedModules.includes(module)) return; LogService.logger.warn(module, ...messageOrObject); } } exports.LogService = LogService; /** * Extracts the useful part of a request's error into something loggable. * @param {Error} err The error to parse. * @returns {*} The extracted error, or the given error if unaltered. * @category Logging */ function extractRequestError(err) { if (err && 'body' in err) { return err.body; } return err; } exports.extractRequestError = extractRequestError; //# sourceMappingURL=LogService.js.map