@0xtld/tair-node
Version:
A Node.js package for Tair functionality with configuration, core, and helper modules.
61 lines (51 loc) • 1.49 kB
text/typescript
import winston from 'winston';
import { ColorTheme } from './colors';
// Initialize color theme
const colors = new ColorTheme();
const customLevels = {
levels: {
error: 0,
warn: 1,
info: 2,
success: 3,
custom: 4,
},
colors: {
error: 'red',
warn: 'yellow',
info: 'cyan',
success: 'green',
custom: 'magenta',
},
};
const padLevel = (level: string): string => {
const padLength = 7;
return level.toUpperCase().padEnd(padLength);
};
const customFormat = winston.format.combine(
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
winston.format.printf(({ timestamp, level, message }) => {
// Map level colors
const levelColors: { [key: string]: string } = {
error: colors.colors.error,
warn: colors.colors.warning,
info: colors.colors.info,
success: colors.colors.success,
custom: colors.colors.highlight,
};
// Color the timestamp using dim style
const coloredTimestamp = `${colors.baseColors.dim}${timestamp}${colors.colors.reset}`;
// Color the level
const coloredLevel = `${levelColors[level]}${padLevel(level)}${colors.colors.reset}`;
return `${coloredTimestamp} | ${coloredLevel} | ${message}`;
})
);
// Create logger instance
const logger = winston.createLogger({
levels: customLevels.levels,
level: 'custom',
format: customFormat,
transports: [new winston.transports.Console()],
});
winston.addColors(customLevels.colors);
export { logger };