MCP Blockchain Server

import winston from 'winston'; // Define log levels const levels = { error: 0, warn: 1, info: 2, http: 3, debug: 4, }; // Define colors for each level const colors = { error: 'red', warn: 'yellow', info: 'green', http: 'magenta', debug: 'white', }; // Add colors winston.addColors(colors); // Get log level from environment or default to 'info' const level = process.env.LOG_LEVEL || 'info'; // Define format const format = winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }), winston.format.colorize({ all: true }), winston.format.printf( (info) => `${info.timestamp} ${info.level}: ${info.message}` ) ); // Define transports const transports = [ // Console transport new winston.transports.Console(), // Add file transport for production environment ...(process.env.NODE_ENV === 'production' ? [ new winston.transports.File({ filename: 'logs/error.log', level: 'error', }), new winston.transports.File({ filename: 'logs/combined.log' }), ] : []), ]; // Create the logger export const logger = winston.createLogger({ level, levels, format, transports, }); // Export a stream object for Morgan middleware export const stream = { write: (message: string) => { logger.http(message.trim()); }, };