coreto-mcp-glpi
Version:
MCP Server para integração CORETO AI com GLPI via tools de tickets
74 lines (64 loc) • 2.21 kB
JavaScript
import winston from 'winston'
import { fileURLToPath } from 'url'
import { dirname, join } from 'path'
import { existsSync, mkdirSync } from 'fs'
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
// Ensure logs directory exists
const logsDir = join(__dirname, '../../logs')
if (!existsSync(logsDir)) {
mkdirSync(logsDir, { recursive: true })
}
// Custom format for console output
const consoleFormat = winston.format.combine(
winston.format.colorize(),
winston.format.timestamp({ format: 'HH:mm:ss' }),
winston.format.printf(({ timestamp, level, message, service, ...meta }) => {
const metaStr = Object.keys(meta).length ? JSON.stringify(meta, null, 2) : ''
return `${timestamp} [${service || 'CORETO'}] ${level}: ${message} ${metaStr}`
})
)
// File format
const fileFormat = winston.format.combine(
winston.format.timestamp(),
winston.format.errors({ stack: true }),
winston.format.json()
)
// Create logger
const logger = winston.createLogger({
level: process.env.LOG_LEVEL || 'info',
defaultMeta: { service: 'coreto-backend' },
transports: [
// Console transport
new winston.transports.Console({
format: consoleFormat
}),
// Error file transport
new winston.transports.File({
filename: join(logsDir, 'error.log'),
level: 'error',
format: fileFormat,
maxsize: 5242880, // 5MB
maxFiles: 5
}),
// Combined file transport
new winston.transports.File({
filename: join(logsDir, 'combined.log'),
format: fileFormat,
maxsize: 5242880, // 5MB
maxFiles: 5
})
]
})
// Component-specific loggers
export const createComponentLogger = (component) => {
return logger.child({ component })
}
// Specific loggers for main components
export const gatewayLogger = createComponentLogger('gateway')
export const mcpLogger = createComponentLogger('mcp-server')
export const tenantLogger = createComponentLogger('tenant-manager')
export const glpiLogger = createComponentLogger('glpi-connector')
export const whatsappLogger = createComponentLogger('whatsapp')
export const ollamaLogger = createComponentLogger('ollama')
export default logger