UNPKG

postgres-mcp-tools

Version:

PostgreSQL-based memory system with vector search capabilities for AI applications, including MCP integration for Claude

87 lines (76 loc) 1.86 kB
import winston from 'winston'; import dotenv from 'dotenv'; // Load environment variables dotenv.config(); // 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); // Create custom format const format = winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }), winston.format.printf( (info) => `${info.timestamp} ${info.level}: ${info.message}`, ), ); // Define transport array based on environment const transports = [ new winston.transports.Console({ format: winston.format.combine( winston.format.colorize({ all: true }), winston.format.printf( (info) => `${info.timestamp} ${info.level}: ${info.message}`, ), ), // Force all log levels to stderr stderrLevels: Object.keys(levels), }), ]; // Add file transport in production const fileTransports = []; if (process.env.NODE_ENV === 'production') { fileTransports.push( new winston.transports.File({ filename: 'logs/error.log', level: 'error', maxsize: 5242880, // 5MB maxFiles: 5, }), new winston.transports.File({ filename: 'logs/combined.log', maxsize: 5242880, // 5MB maxFiles: 5, }), ); } // Create the logger instance export const logger = winston.createLogger({ level: level(), levels, format, transports: [ ...transports, ...fileTransports ], }); export default logger;