UNPKG

@tsed/logger

Version:
867 lines (866 loc) 25 kB
var H = (t) => { throw TypeError(t); }; var Y = (t, e, r) => e.has(t) || H("Cannot " + r); var q = (t, e, r) => (Y(t, e, "read from private field"), r ? r.call(t) : e.get(t)), K = (t, e, r) => e.has(t) ? H("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, r), R = (t, e, r, n) => (Y(t, e, "write to private field"), n ? n.call(t, r) : e.set(t, r), r); const U = /* @__PURE__ */ new Map(); class V { static get(e, r) { typeof e != "string" && (e = e.$name), U.has(e) || (e = "colored", console.warn(e + " layout doesn't exists")); const n = U.get(e); return new n.provide(r); } } var w; class ve { constructor(e) { K(this, w); this.config = e, this.configure(e); } get appenderOptions() { return this.__proto__.constructor.$appenderOptions; } configure(e) { var r; return Object.assign(this.config, e), R(this, w, V.get(((r = this.appenderOptions) == null ? void 0 : r.defaultLayout) || "colored", this.config)), this.config.layout && R(this, w, V.get(this.config.layout.type, this.config.layout)), this; } /** * * @param args */ layout(...e) { return q(this, w).transform(...e); } } w = new WeakMap(); const B = /* @__PURE__ */ new Map(); function ge(t) { return (e) => { e.$appenderOptions = t, e.$name = t.name, B.set(t.name, { provide: e }); }; } var _e = Object.defineProperty, me = Object.getOwnPropertyDescriptor, Oe = (t, e, r, n) => { for (var s = n > 1 ? void 0 : n ? me(e, r) : e, i = t.length - 1, a; i >= 0; i--) (a = t[i]) && (s = (n ? a(e, r, s) : a(s)) || s); return n && s && _e(e, r, s), s; }; let X = class extends ve { constructor() { super(...arguments), this.log = console.log.bind(console); } write(t) { this.log(this.layout(t, this.config.timezoneOffset)); } }; X = Oe([ ge({ name: "console" }) ], X); class ye extends Map { toJSON() { return [...this.entries()].reduce((e, [r, n]) => ({ ...e, [r]: n }), {}); } } class we { /** * Models a logging event. * @constructor * @param categoryName * @param level * @param data * @param context */ constructor(e, r, n, s) { this.categoryName = e, this.level = r, this.data = n, this.context = s, this._startTime = /* @__PURE__ */ new Date(); } get startTime() { return this.data && this.data[0] && this.data[0].time ? this.data[0].time : this._startTime; } /** * @deprecated */ get formatedLevel() { return this.formattedLevel; } get formattedLevel() { return (this.level.toString() + " ").slice(0, 5); } get cluster() { return {}; } get pid() { return this.context.get("pid"); } isMessage() { return this.data.length && typeof this.data[0] != "object"; } getData() { return this.isMessage() ? {} : this.data[0]; } getMessage() { return this.isMessage() ? this.data : void 0; } } class d { constructor(e, r) { this.level = e, this.levelStr = r, this.level = e, this.levelStr = r; } static getLevel(e, r) { if (e instanceof d) return e; if (typeof e == "string") { const n = e.toUpperCase(); return se[n] || r; } return this.getLevel(e.toString()); } toString() { return this.levelStr; } isLessThanOrEqualTo(e) { return typeof e == "string" && (e = d.getLevel(e)), this.level <= e.level; } isGreaterThanOrEqualTo(e) { return typeof e == "string" && (e = d.getLevel(e)), this.level >= e.level; } isEqualTo(e) { return typeof e == "string" && (e = d.getLevel(e)), this.level === e.level; } } const se = { ALL: new d(Number.MIN_VALUE, "ALL"), TRACE: new d(5e3, "TRACE"), DEBUG: new d(1e4, "DEBUG"), INFO: new d(2e4, "INFO"), WARN: new d(3e4, "WARN"), ERROR: new d(4e4, "ERROR"), FATAL: new d(5e4, "FATAL"), MARK: new d(9007199254740992, "MARK"), // 2^53 OFF: new d(Number.MAX_VALUE, "OFF") }; function y() { return se; } class m { constructor(e) { this.config = e; } } function O(t) { return (e) => { e.$name = t.name, U.set(t.name, { provide: e }); }; } function Se(t, e) { let r; return t ? (r = parseInt(t.substr(1), 10), e.substring(0, r)) : e; } function Te(t, e) { let r; if (t) if (t.charAt(0) === "-") for (r = parseInt(t.substr(1), 10); e.length < r; ) e += " "; else for (r = parseInt(t, 10); e.length < r; ) e = ` ${e}`; return e; } function xe(t, e, r) { let n = t; return n = Se(e, n), n = Te(r, n), n; } const S = { format(t, ...e) { return ""; } }; var ie = { exports: {} }; (function(t) { function e(l, u) { for (var f = l.toString(); f.length < u; ) f = "0" + f; return f; } function r(l) { return e(l, 2); } function n(l) { var u = Math.abs(l), f = String(Math.floor(u / 60)), p = String(u % 60); return f = ("0" + f).slice(-2), p = ("0" + p).slice(-2), l === 0 ? "Z" : (l < 0 ? "+" : "-") + f + ":" + p; } function s(l, u) { typeof l != "string" && (u = l, l = t.exports.ISO8601_FORMAT), u || (u = t.exports.now()); var f = r(u.getDate()), p = r(u.getMonth() + 1), T = r(u.getFullYear()), x = r(T.substring(2, 4)), j = l.indexOf("yyyy") > -1 ? T : x, b = r(u.getHours()), L = r(u.getMinutes()), M = r(u.getSeconds()), A = e(u.getMilliseconds(), 3), c = n(u.getTimezoneOffset()), o = l.replace(/dd/g, f).replace(/MM/g, p).replace(/y{1,4}/g, j).replace(/hh/g, b).replace(/mm/g, L).replace(/ss/g, M).replace(/SSS/g, A).replace(/O/g, c); return o; } function i(l, u, f, p) { l["set" + (p ? "" : "UTC") + u](f); } function a(l, u, f) { var p = l.indexOf("O") < 0, T = !1, x = [ { pattern: /y{1,4}/, regexp: "\\d{1,4}", fn: function(c, o) { i(c, "FullYear", o, p); } }, { pattern: /MM/, regexp: "\\d{1,2}", fn: function(c, o) { i(c, "Month", o - 1, p), c.getMonth() !== o - 1 && (T = !0); } }, { pattern: /dd/, regexp: "\\d{1,2}", fn: function(c, o) { T && i(c, "Month", c.getMonth() - 1, p), i(c, "Date", o, p); } }, { pattern: /hh/, regexp: "\\d{1,2}", fn: function(c, o) { i(c, "Hours", o, p); } }, { pattern: /mm/, regexp: "\\d\\d", fn: function(c, o) { i(c, "Minutes", o, p); } }, { pattern: /ss/, regexp: "\\d\\d", fn: function(c, o) { i(c, "Seconds", o, p); } }, { pattern: /SSS/, regexp: "\\d\\d\\d", fn: function(c, o) { i(c, "Milliseconds", o, p); } }, { pattern: /O/, regexp: "[+-]\\d{1,2}:?\\d{2}?|Z", fn: function(c, o) { o === "Z" ? o = 0 : o = o.replace(":", ""); var Z = Math.abs(o), de = (o > 0 ? -1 : 1) * (Z % 100 + Math.floor(Z / 100) * 60); c.setUTCMinutes(c.getUTCMinutes() + de); } } ], j = x.reduce( function(c, o) { return o.pattern.test(c.regexp) ? (o.index = c.regexp.match(o.pattern).index, c.regexp = c.regexp.replace(o.pattern, "(" + o.regexp + ")")) : o.index = -1, c; }, { regexp: l, index: [] } ), b = x.filter(function(c) { return c.index > -1; }); b.sort(function(c, o) { return c.index - o.index; }); var L = new RegExp(j.regexp), M = L.exec(u); if (M) { var A = f || t.exports.now(); return b.forEach(function(c, o) { c.fn(A, M[o + 1]); }), A; } throw new Error( "String '" + u + "' could not be parsed as '" + l + "'" ); } function v(l, u, f) { if (!l) throw new Error("pattern must be supplied"); return a(l, u, f); } function h() { return /* @__PURE__ */ new Date(); } t.exports = s, t.exports.asString = s, t.exports.parse = v, t.exports.now = h, t.exports.ISO8601_FORMAT = "yyyy-MM-ddThh:mm:ss.SSS", t.exports.ISO8601_WITH_TZ_OFFSET_FORMAT = "yyyy-MM-ddThh:mm:ss.SSSO", t.exports.DATETIME_FORMAT = "dd MM yyyy hh:mm:ss.SSS", t.exports.ABSOLUTETIME_FORMAT = "hh:mm:ss.SSS"; })(ie); var g = ie.exports; const ae = { // styles bold: [1, 22], italic: [3, 23], underline: [4, 24], inverse: [7, 27], // grayscale white: [37, 39], grey: [90, 39], black: [90, 39], // colors blue: [34, 39], cyan: [36, 39], green: [32, 39], magenta: [35, 39], red: [31, 39], yellow: [33, 39] }; function oe(t) { return t ? `\x1B[${ae[t][0]}m` : ""; } function ce(t) { return t ? `\x1B[${ae[t][1]}m` : ""; } function be(t, e) { return oe(e) + t + ce(e); } function Me(t) { return t.replace(/\[\d+m|\\u\d+b/gi, ""); } function le(t, e, r) { return be( S.format( "[%s] [%s] [%s] - ", g.asString(t.startTime, r), t.formattedLevel, t.categoryName ), e ); } var Ae = Object.defineProperty, Ee = Object.getOwnPropertyDescriptor, De = (t, e, r, n) => { for (var s = n > 1 ? void 0 : n ? Ee(e, r) : e, i = t.length - 1, a; i >= 0; i--) (a = t[i]) && (s = (n ? a(e, r, s) : a(s)) || s); return n && s && Ae(e, r, s), s; }; let G = class extends m { /** * BasicLayout is a simple layouts for storing the logs. The logs are stored * in following format: * <pre> * [startTime] [logLevel] categoryName - message\n * </pre> * * @author Stephan Strittmatter */ transform(t, e) { return le(t, void 0, e) + S.format(...[].concat(t.data)); } }; G = De([ O({ name: "basic" }) ], G); var N = /* @__PURE__ */ ((t) => (t.ALL = "grey", t.INFO = "green", t.DEBUG = "cyan", t.WARN = "yellow", t.TRACE = "blue", t.ERROR = "red", t.FATAL = "magenta", t.OFF = "grey", t))(N || {}), Pe = Object.defineProperty, Ne = Object.getOwnPropertyDescriptor, Fe = (t, e, r, n) => { for (var s = n > 1 ? void 0 : n ? Ne(e, r) : e, i = t.length - 1, a; i >= 0; i--) (a = t[i]) && (s = (n ? a(e, r, s) : a(s)) || s); return n && s && Pe(e, r, s), s; }; let Q = class extends m { /** * colouredLayout - taken from masylum's fork. * same as basicLayout, but with colours. */ transform(t, e) { const r = t.level.toString(), n = N[r]; return le(t, n, e) + S.format(...[].concat(t.data)); } }; Q = Fe([ O({ name: "colored" }) ], Q); var $e = Object.defineProperty, je = Object.getOwnPropertyDescriptor, Le = (t, e, r, n) => { for (var s = n > 1 ? void 0 : n ? je(e, r) : e, i = t.length - 1, a; i >= 0; i--) (a = t[i]) && (s = (n ? a(e, r, s) : a(s)) || s); return n && s && $e(e, r, s), s; }; let k = class extends m { transform(t, e) { return t.data[0]; } }; k = Le([ O({ name: "dummy" }) ], k); function ue(t) { const e = { ...t.context.toJSON(), startTime: t.startTime, categoryName: t.categoryName, level: t.level.toString() }; return e.data = t.data.reduce((r, n) => typeof n == "object" ? (Object.assign(e, n), n.data ? [].concat(r, n.data) : r) : [...r, Me(S.format(n))], []), e; } var Re = Object.defineProperty, Ie = Object.getOwnPropertyDescriptor, Ce = (t, e, r, n) => { for (var s = n > 1 ? void 0 : n ? Ie(e, r) : e, i = t.length - 1, a; i >= 0; i--) (a = t[i]) && (s = (n ? a(e, r, s) : a(s)) || s); return n && s && Re(e, r, s), s; }; let ee = class extends m { transform(t, e) { const r = ue(t); return JSON.stringify(r) + (this.config.separator || ""); } }; ee = Ce([ O({ name: "json" }) ], ee); var ze = Object.defineProperty, Ue = Object.getOwnPropertyDescriptor, Be = (t, e, r, n) => { for (var s = n > 1 ? void 0 : n ? Ue(e, r) : e, i = t.length - 1, a; i >= 0; i--) (a = t[i]) && (s = (n ? a(e, r, s) : a(s)) || s); return n && s && ze(e, r, s), s; }; let te = class extends m { transform(t, e) { return S.format(...[].concat(t.data)); } }; te = Be([ O({ name: "messagePassThrough" }) ], te); var We = Object.defineProperty, Je = Object.getOwnPropertyDescriptor, Ze = (t, e, r, n) => { for (var s = n > 1 ? void 0 : n ? Je(e, r) : e, i = t.length - 1, a; i >= 0; i--) (a = t[i]) && (s = (n ? a(e, r, s) : a(s)) || s); return n && s && We(e, r, s), s; }; let re = class extends m { transform(t, e) { return ue(t); } }; re = Ze([ O({ name: "object" }) ], re); var He = Object.defineProperty, Ye = Object.getOwnPropertyDescriptor, he = (t) => { throw TypeError(t); }, qe = (t, e, r, n) => { for (var s = n > 1 ? void 0 : n ? Ye(e, r) : e, i = t.length - 1, a; i >= 0; i--) (a = t[i]) && (s = (n ? a(e, r, s) : a(s)) || s); return n && s && He(e, r, s), s; }, fe = (t, e, r) => e.has(t) || he("Cannot " + r), I = (t, e, r) => (fe(t, e, "read from private field"), r ? r.call(t) : e.get(t)), C = (t, e, r) => e.has(t) ? he("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, r), z = (t, e, r, n) => (fe(t, e, "write to private field"), e.set(t, r), r), E, D, P; const Ke = /%(-?[0-9]+)?(\.?[0-9]+)?([[\]cdhmnpjrzxy%])(\{([^}]+)\})?|([^%]+)/, Ve = "%r %p %c - %m%n"; let F = class extends m { constructor(t) { super(t), C(this, E), C(this, D), C(this, P), this.replaceToken = (e, r, n) => I(this, E)[e](r, n), z(this, P, t && t.pattern || Ve), z(this, D, t && t.tokens), z(this, E, new F.LayoutReplacer(I(this, D), this.config.timezoneOffset).build()); } /** * * @param loggingEvent * @param timezoneOffset * @returns {string} */ transform(t, e) { let r = "", n, s = I(this, P); for (; (n = Ke.exec(s)) !== null; ) { const i = n[1], a = n[2], v = n[3], h = n[5], l = n[6]; if (l) r += l.toString(); else { const u = this.replaceToken(v, t, h); r += xe(u, a, i); } s = s.substr(n.index + n[0].length); } return r; } }; E = /* @__PURE__ */ new WeakMap(); D = /* @__PURE__ */ new WeakMap(); P = /* @__PURE__ */ new WeakMap(); F = qe([ O({ name: "pattern" }) ], F); function $(t, e = " ") { let r = ""; for (; t--; ) r += e; return r; } function Xe(t, e) { let r = "┌", n = Object.keys(t); return n.forEach((s, i) => { i !== 0 && i !== n.length && (r += "┬"), r += $(t[s] + 2 * e.padding, "─"); }), r += "┐", r; } function Ge(t, e) { let r = "└", n = Object.keys(t); return n.forEach((s, i) => { i !== 0 && i !== n.length && (r += "┴"), r += $(t[s] + 2 * e.padding, "─"); }), r += "┘", r; } function Qe(t, e, r = "─") { let n = ""; return Object.keys(t).forEach((s) => { n += "│", n += $(t[s] + 2 * e.padding, r); }), n += "│", n; } function ne(t, e, r) { let n = ""; return Object.keys(e).forEach((s) => { n += "│ ", n += t[s], n += $(e[s] + 2 * (r.padding - 1) - t[s].length, " "), n += " "; }), n += "│", n; } function ke(t, e = {}) { e.padding = e.padding || 1, e.header === void 0 && (e.header = {}, Object.keys(t[0]).forEach((s) => e.header[s] = s)); const r = {}; Object.keys(e.header).forEach((s) => r[s] = e.header[s].length), t.forEach((s) => { Object.keys(r).forEach((i) => r[i] = Math.max(("" + s[i]).length, r[i])); }); let n = ""; return n += Xe(r, e) + ` `, n += ne(e.header, r, e) + ` `, t.forEach((s) => { n += Qe(r, e) + ` `, n += ne(s, r, e) + ` `; }), n += Ge(r, e), n; } class et { constructor() { this._appenders = /* @__PURE__ */ new Map(), this._lvls = /* @__PURE__ */ new Map(); } get size() { return this._appenders.size; } /** * The `has() method returns a boolean indicating whether an element with the specified configuration name exists or not. * @param name Required. The key of the element to test for presence in the Map object.` * @returns {boolean} */ has(e) { return this._appenders.has(e); } /** * The `get() method returns a specified element from a loggerAppenders. * @param name Required. The configuration of the element to return from the Map object. * @returns {LoggerAppender} */ get(e) { return this._appenders.get(e); } /** * The `set()` method adds or updates an element with a specified key and value to a loggerAppenders object. * @param name Required. The key of the element to add to the loggerAppenders object. * @param config Required. The config of the element to add to the loggerAppenders object. * @returns {LoggerAppender} */ set(e, r) { var v; const n = typeof r.type == "string" ? r.type : (v = r.type) == null ? void 0 : v.$name, s = { level: ["debug", "info", "trace", "error", "warn", "fatal"], ...r, type: n, options: r.options || {} }; if (!B.has(s.type)) { const h = new Error(`Appender ${s.type} doesn't exists. Check your configuration: ${JSON.stringify(s)} `); throw h.name = "UNKNOW_APPENDER", h; } const i = B.get(s.type).provide, a = new i(s); return "build" in a && a.build(), this._appenders.set(e, { name: e, instance: a, config: s }), this._lvls.clear(), this; } /** * Remove all configuration that match with the `name`. * @param name Required. The key of the element to remove from the loggerAppenders object. * @returns {boolean} Returns true if an element in the Map object existed and has been removed, or false if the element does not exist. */ delete(e) { let r = this._appenders.delete(e); return r && this._lvls.clear(), r; } /** * The `clear() method removes all elements from a loggerAppenders object. */ clear() { this._appenders.clear(), this._lvls.clear(); } /** * The `forEach()` method executes a provided function once per each key/value pair in the loggerAppenders object, in insertion order. * @param callback Function to execute for each element. * @param thisArg Value to use as this when executing callback. */ forEach(e, r) { this._appenders.forEach(e, r); } /** * * @returns {Array} */ toArray() { const e = []; return this._appenders.forEach((r) => e.push(r)), e; } /** * Return all appenders that match with the given loggingLevel. * @param loggingLevel * @returns {[BaseAppender]} */ byLogLevel(e) { const r = e.toString(); if (this._lvls.has(r)) return this._lvls.get(r); const n = this.toArray().filter( (s) => s.config.levels ? s.config.levels.find((i) => i.toUpperCase() === e.toString()) : !0 ).map((s) => s.instance); return this._lvls.set(e.toString(), n), n; } } class J { /** * */ constructor(e = "default") { this._name = e, this._appenders = new et(), this._context = new ye(), this.level = "all"; } get appenders() { return this._appenders; } get level() { return this._level.toString(); } set level(e) { this._level = d.getLevel(e, "debug"); } get context() { return this._context; } get name() { return this._name; } set name(e) { this._name = e; } /** * Create stack trace the lines of least Logger. * @returns {string} */ static createStack() { return new Error().stack.replace(`Error `, "").split(` `).filter((r, n) => n >= 2).join(` `); } isLevelEnabled(e) { return this._level.isLessThanOrEqualTo(e); } /** * Prints to stdout with newline. Multiple arguments can be passed, with the first used as the primary message and all additional used as substitution values similar to printf() (the arguments are all passed to util.format()). * @param data * @returns {any} */ debug(...e) { return this.write(y().DEBUG, e); } /** * * @param data * @returns {any} */ info(...e) { return this.write(y().INFO, e); } /** * * @param data * @returns {any} */ warn(...e) { return this.write(y().WARN, e); } /** * Prints to stderr with newline. Multiple arguments can be passed, with the first used as the primary * message and all additional used as substitution values similar to printf() (the arguments are all * passed to util.format()). * @param data * @returns {any} */ error(...e) { return this.write(y().ERROR, e); } fatal(...e) { return this.write(y().FATAL, e); } /** * * @param data * @returns {Logger} */ trace(...e) { const r = ` ` + J.createStack() + ` `; return e.push(r), this.write(y().TRACE, e); } /** * */ start() { return this.level = "ALL", this; } /** * */ stop() { return this.level = "OFF", this; } /** * * @returns {Promise<any[]>} */ shutdown() { this.stop(); const e = this.appenders.toArray().filter((r) => !!r.instance.shutdown).map((r) => r.instance.shutdown()); return Promise.all(e); } /** * * @param list * @param settings */ drawTable(e, r = {}) { return ke(e, r); } /** * * @param list * @param settings * @returns {Logger} */ printTable(e, r = {}) { return this.info(` ${this.drawTable(e, r)}`), this; } /** * * @returns {Logger} */ write(e, r) { if (!this.isLevelEnabled(e)) return this; const n = new we(this._name, e, r, this._context); return this.appenders.byLogLevel(e).forEach((s) => { s.write(n); }), this; } } function pe(t, ...e) { const r = /(%?)(%([ojds]))/g; if (typeof t == "object" && (t = JSON.stringify(t, null, 2)), e.length) { const n = (s, i, a, v) => { let h = e.shift(); switch (v) { case "o": if (Array.isArray(h)) { h = JSON.stringify(h); break; } case "s": h = "" + h; break; case "d": h = Number(h); break; case "j": h = JSON.stringify(h); break; } return i ? (e.unshift(h), s) : h; }; t = String(t).replace(r, n); } return e.length && (t += " " + e.join(" ")), t = String(t).replace(/%{2,2}/g, "%"), "" + t; } const _ = class _ { constructor(e, r) { this.tokens = e, this.timezoneOffset = r, this.categoryName = (n, s) => { let i = n.categoryName; if (s) { const a = parseInt(s, 10), v = i.split("."); a < v.length && (i = v.slice(v.length - a).join(".")); } return i; }, this.formatAsDate = (n, s) => { let i = g.ISO8601_FORMAT; return s && (i = s, i === "ISO8601" ? i = g.ISO8601_FORMAT : i === "ISO8601_WITH_TZ_OFFSET" ? i = g.ISO8601_WITH_TZ_OFFSET_FORMAT : i === "ABSOLUTE" ? i = g.ABSOLUTETIME_FORMAT : i === "DATE" && (i = g.DATETIME_FORMAT)), g.asString(i, n.startTime, this.timezoneOffset); }, this.hostname = () => _.HOSTNAME || "", this.formatMessage = (n) => _.formatter(...n.data), this.formatJson = (n) => JSON.stringify(n.data), this.endOfLine = () => _.EOL, this.logLevel = (n) => n.level.toString(), this.startTime = (n) => g.asString("hh:mm:ss", n.startTime, this.timezoneOffset), this.startColour = (n) => { const s = n.level.toString(); return oe(N[s]); }, this.endColour = (n) => { const s = n.level.toString(); return ce(N[s]); }, this.percent = () => "%", this.pid = (n) => n && n.pid ? n.pid.toString() : "", this.clusterInfo = (n, s) => n.cluster && s ? s.replace("%m", n.cluster.master).replace("%w", n.cluster.worker).replace("%i", n.cluster.workerId) : n.cluster ? `${n.cluster.worker}@${n.cluster.master}` : this.pid(), this.userDefined = (n, s) => typeof this.tokens[s] < "u" ? typeof this.tokens[s] == "function" ? this.tokens[s](n) : this.tokens[s] : null; } build() { return { c: this.categoryName, d: this.formatAsDate, h: this.hostname, m: this.formatMessage, j: this.formatJson, n: this.endOfLine, p: this.logLevel, r: this.startTime, "[": this.startColour, "]": this.endColour, y: this.clusterInfo, z: this.pid, "%": this.percent, x: this.userDefined }; } }; _.EOL = ` `, _.HOSTNAME = "", _.formatter = pe; let W = _; const tt = new J("default"); tt.appenders.set("console", { type: "console", levels: ["info", "debug", "trace", "fatal", "error", "warn"] }); F.LayoutReplacer = W; S.format = pe; export { tt as $log, ge as Appender, B as AppendersRegistry, ve as BaseAppender, m as BaseLayout, G as BasicLayout, Q as ColoredLayout, X as ConsoleAppender, k as DummyLayout, ee as JsonLayout, N as LOG_COLORS, O as Layout, W as LayoutReplacer, V as Layouts, U as LayoutsRegistry, ye as LogContext, we as LogEvent, d as LogLevel, J as Logger, et as LoggerAppenders, te as MessagePassThroughLayout, re as ObjectLayout, F as PatternLayout, S as StringUtils, Ge as buildEndLine, Qe as buildLine, ne as buildLineData, Xe as buildStartLine, $ as charRepeater, be as colorize, ce as colorizeEnd, oe as colorizeStart, ke as drawTable, pe as format, y as levels, ue as logEventToObject, Te as pad, Me as removeColors, le as timestampLevelAndCategory, Se as truncate, xe as truncateAndPad };