tiny-typescript-logger
Version:
<h1>Tiny TypeScript Logger</h2>
78 lines (76 loc) • 2.25 kB
JavaScript
// src/logger.ts
import chalk from "chalk";
var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
LogLevel2[LogLevel2["Trace"] = 10] = "Trace";
LogLevel2[LogLevel2["Debug"] = 20] = "Debug";
LogLevel2[LogLevel2["Info"] = 30] = "Info";
LogLevel2[LogLevel2["Warn"] = 40] = "Warn";
LogLevel2[LogLevel2["Error"] = 50] = "Error";
LogLevel2[LogLevel2["Fatal"] = 60] = "Fatal";
return LogLevel2;
})(LogLevel || {});
var logLevelToName = {
[10 /* Trace */]: "trace",
[20 /* Debug */]: "debug",
[30 /* Info */]: "info",
[40 /* Warn */]: "warn",
[50 /* Error */]: "error",
[60 /* Fatal */]: "fatal"
};
var logLevelToColor = {
[10 /* Trace */]: "#ECD5E3" /* Lavender */,
[20 /* Debug */]: "#ABDEE6" /* PastelBlue */,
[30 /* Info */]: "#97C1A9" /* PastelGreen */,
[40 /* Warn */]: "#FDFD96" /* PastelYellow */,
[50 /* Error */]: "#FFB6B6" /* LightCoral */,
[60 /* Fatal */]: "#FF6961" /* PastelRed */
};
var Logger = class {
debug(...items) {
this.log(20 /* Debug */, ...items);
}
error(...items) {
this.log(50 /* Error */, ...items);
}
fatal(...items) {
this.log(60 /* Fatal */, ...items);
}
info(...items) {
this.log(30 /* Info */, ...items);
}
log(level, ...items) {
if (items.length === 0) {
return;
}
const message = this.isString(items[0]) ? items.shift() : "";
const formattedMessage = this.formatMessage(level, message);
console.log(formattedMessage, ...items);
}
trace(...items) {
this.log(10 /* Trace */, ...items);
}
warn(...items) {
this.log(40 /* Warn */, ...items);
}
formatMessage(level, message) {
const date = (/* @__PURE__ */ new Date()).toISOString();
const formattedDate = chalk.dim(date);
const logLevelName = logLevelToName[level] ?? "unknown";
const logLevelColor = logLevelToColor[level] ?? "#f1f5f9" /* LightGray */;
const logLevel = chalk.hex(logLevelColor)(logLevelName.toUpperCase());
const formattedLogLevel = `[${logLevel}]`;
const formattedMessage = [formattedLogLevel, formattedDate, message].join(
" "
);
return formattedMessage;
}
isString(value) {
return typeof value === "string";
}
};
// src/index.ts
var log = new Logger();
export {
LogLevel,
log
};