UNPKG

@xylabs/logger

Version:

XYLabs Logger Library

125 lines (119 loc) 2.85 kB
// src/LevelLogger.ts import { Enum } from "@xylabs/enum"; // src/NoOpLogFunction.ts var NoOpLogFunction = (..._data) => void {}; // src/LevelLogger.ts var LogLevel = Enum({ error: 1, warn: 2, info: 3, log: 4, debug: 5, trace: 6 }); var LevelLogger = class { level; logger; constructor(logger, level = LogLevel.warn) { this.level = level; this.logger = logger; } get debug() { return this.level >= LogLevel.debug ? this.logger.debug : NoOpLogFunction; } get error() { return this.level >= LogLevel.error ? this.logger.error : NoOpLogFunction; } get info() { return this.level >= LogLevel.info ? this.logger.info : NoOpLogFunction; } get log() { return this.level >= LogLevel.log ? this.logger.log : NoOpLogFunction; } get trace() { return this.level >= LogLevel.trace ? this.logger.trace : NoOpLogFunction; } get warn() { return this.level >= LogLevel.warn ? this.logger.warn : NoOpLogFunction; } }; // src/ConsoleLogger.ts var ConsoleLogger = class extends LevelLogger { constructor(level = LogLevel.warn) { super(console, level); } }; // src/getFunctionName.ts import { handleError } from "@xylabs/error"; import { isNumber } from "@xylabs/typeof"; var getFunctionName = (depth = 2) => { try { throw new Error("Getting function name"); } catch (ex) { return handleError(ex, (error) => { let newIndex; const stackParts = error.stack?.split("\n")[depth]?.split(" "); const funcName = stackParts?.find((item, index) => { if (item.length > 0 && item !== "at") { if (item === "new") { newIndex = index; } return true; } }) ?? "<unknown>"; return isNumber(newIndex) ? `${funcName} ${stackParts?.[newIndex + 1]}` : funcName; }); } }; // src/IdLogger.ts var IdLogger = class { _id; _logger; constructor(logger, id) { this._logger = logger; this._id = id; } set id(id) { this._id = () => id; } debug(...data) { this._logger?.debug(this.prefix(), ...data); } error(...data) { this._logger?.error(this.prefix(), ...data); } info(...data) { this._logger?.info(this.prefix(), ...data); } log(...data) { this._logger?.log(this.prefix(), ...data); } trace(...data) { this._logger?.trace(this.prefix(), ...data); } warn(...data) { this._logger?.warn(this.prefix(), ...data); } prefix() { return `[${this._id?.()}]`; } }; // src/SilentLogger.ts var SilentLogger = class { debug = NoOpLogFunction; error = NoOpLogFunction; info = NoOpLogFunction; log = NoOpLogFunction; trace = NoOpLogFunction; warn = NoOpLogFunction; }; export { ConsoleLogger, IdLogger, LevelLogger, LogLevel, NoOpLogFunction, SilentLogger, getFunctionName }; //# sourceMappingURL=index.mjs.map