@xylabs/logger
Version:
XYLabs Logger Library
125 lines (119 loc) • 2.85 kB
JavaScript
// 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