@rs-r2d2/log4ts
Version:
A powerful, flexible logging library for TypeScript inspired by Apache Log4j, featuring colored output and emojis
49 lines (48 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = void 0;
const LogLevel_1 = require("./LogLevel");
class Logger {
constructor(name) {
this.name = name;
this.appenders = [];
}
addAppender(appender) {
this.appenders.push(appender);
}
log(level, message, ...args) {
const error = args.length > 0 && args[args.length - 1] instanceof Error
? args.pop()
: undefined;
const formattedMessage = args.length > 0
? message.replace(/\{\}/g, () => String(args.shift()))
: message;
const event = {
message: formattedMessage,
level,
timestamp: new Date(),
loggerName: this.name,
error
};
this.appenders.forEach(appender => appender.append(event));
}
trace(message, ...args) {
this.log(LogLevel_1.LogLevel.TRACE, message, ...args);
}
debug(message, ...args) {
this.log(LogLevel_1.LogLevel.DEBUG, message, ...args);
}
info(message, ...args) {
this.log(LogLevel_1.LogLevel.INFO, message, ...args);
}
warn(message, ...args) {
this.log(LogLevel_1.LogLevel.WARN, message, ...args);
}
error(message, ...args) {
this.log(LogLevel_1.LogLevel.ERROR, message, ...args);
}
fatal(message, ...args) {
this.log(LogLevel_1.LogLevel.FATAL, message, ...args);
}
}
exports.Logger = Logger;