UNPKG

myex-cli

Version:

Opinionated Express.js framework with CLI tools

76 lines (66 loc) 1.74 kB
import winston from 'winston'; import path from 'path'; import { fileURLToPath } from 'url'; // Get directory paths from ES modules const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const logDir = path.join(__dirname, '../../logs'); // Define log levels const levels = { error: 0, warn: 1, info: 2, http: 3, debug: 4, }; // Define log level based on environment const level = () => { const env = process.env.NODE_ENV || 'development'; const isDevelopment = env === 'development'; return isDevelopment ? 'debug' : process.env.LOG_LEVEL || 'info'; }; // Define log colors const colors = { error: 'red', warn: 'yellow', info: 'green', http: 'magenta', debug: 'blue', }; // Add colors to winston winston.addColors(colors); // Define Winston format const format = winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.printf( (info) => `${info.timestamp} ${info.level}: ${info.message}` ) ); // Define transports const transports = [ // Console transport for all environments new winston.transports.Console({ format: winston.format.combine( winston.format.colorize({ all: true }), winston.format.printf( (info) => `${info.timestamp} ${info.level}: ${info.message}` ) ), }), // Error log file transport new winston.transports.File({ filename: path.join(logDir, 'error.log'), level: 'error', }), // Combined log file transport new winston.transports.File({ filename: path.join(logDir, 'combined.log'), }), ]; // Create the Winston logger export const logger = winston.createLogger({ level: level(), levels, format, transports, });