@spotable/attio-sdk
Version:
Client for Attio REST API
46 lines (40 loc) • 1.17 kB
text/typescript
import * as winston from "winston";
import chalk from "chalk";
import { serializeError } from "serialize-error";
const customFormat = winston.format.printf(({ level, message, error, ...extraOptions }) => {
const colorFn = (() => {
switch (level) {
case "error":
return chalk.red;
case "warn":
return chalk.yellow;
case "info":
return chalk.white;
case "debug":
return chalk.blue;
default:
return chalk.white;
}
})();
const levelEmoji = (() => {
switch (level) {
case "error":
return "❌";
case "warn":
return "⚠️";
case "info":
return "ℹ️";
case "debug":
return "🐛";
default:
return "🔍";
}
})();
return `${colorFn(`${levelEmoji} ${message}`)}${error ? `\n${chalk.red(serializeError(error))}` : ""}${extraOptions && Object.keys(extraOptions).length > 0 ? `\n${chalk.gray(JSON.stringify(extraOptions, null, 2))}` : ""}`;
});
const logger = winston.createLogger({
level: "debug",
format: customFormat,
transports: [new winston.transports.Console()],
});
export default logger;