UNPKG

chess-mcp

Version:

Chess MCP server with position evaluation, move validation, and masters database

51 lines 1.74 kB
import { createLogger, format, transports } from 'winston'; import path from 'path'; import fs from 'fs'; // Initialize with console transport as fallback const loggerConfig = { level: 'info', format: format.combine(format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), format.errors({ stack: true }), format.splat(), format.json()), defaultMeta: { service: 'chess-mcp' }, transports: [] }; // Try to set up file transports if we have file system access try { const logsDir = path.join(process.cwd(), 'logs'); if (!fs.existsSync(logsDir)) { fs.mkdirSync(logsDir); } // Add file transports loggerConfig.transports.push(new transports.File({ filename: path.join(logsDir, 'error.log'), level: 'error', maxsize: 5242880, // 5MB maxFiles: 5, }), new transports.File({ filename: path.join(logsDir, 'combined.log'), maxsize: 5242880, // 5MB maxFiles: 5, })); } catch (error) { // If file system access fails, we'll only use console logging console.warn('Failed to set up file logging, falling back to console only:', error); } const logger = createLogger(loggerConfig); // Add console transport in non-production environments if (process.env.NODE_ENV !== 'production') { logger.add(new transports.Console({ format: format.combine(format.colorize(), format.simple()) })); } else { // In production, if we have no file transports, add console transport as fallback if (loggerConfig.transports.length === 0) { logger.add(new transports.Console({ format: format.combine(format.colorize(), format.simple()) })); } } export default logger; //# sourceMappingURL=logger.js.map