logjet
Version:
Structured, async TypeScript logger with console, file, HTTP transports and NestJS support
50 lines • 1.61 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = void 0;
const dayjs_1 = __importDefault(require("dayjs"));
class Logger {
constructor(options = {}) {
this.levels = ["debug", "info", "warn", "error"];
this.transports = options.transports || [];
this.level = options.level || "debug";
}
shouldLog(level) {
return this.levels.indexOf(level) >= this.levels.indexOf(this.level);
}
async emit(level, message, context) {
if (!this.shouldLog(level))
return;
const entry = {
timestamp: (0, dayjs_1.default)().toISOString(),
level,
message,
context,
};
await Promise.all(this.transports.map(async (transport) => {
try {
await transport.log(entry);
}
catch (err) {
// optionally handle or queue failed transport logging
console.error(`Transport error:`, err);
}
}));
}
debug(message, context) {
return this.emit("debug", message, context);
}
info(message, context) {
return this.emit("info", message, context);
}
warn(message, context) {
return this.emit("warn", message, context);
}
error(message, context) {
return this.emit("error", message, context);
}
}
exports.Logger = Logger;
//# sourceMappingURL=logger.js.map
;