logger.js•1.38 kB
/**
* Logger utility for application-wide logging
* Uses Winston for structured logging
*/
const winston = require('winston');
const config = require('../config');
// Define log format
const logFormat = winston.format.combine(
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
winston.format.errors({ stack: true }),
winston.format.splat(),
winston.format.json()
);
// Create logger instance
const logger = winston.createLogger({
level: config.NODE_ENV === 'development' ? 'debug' : 'info',
format: logFormat,
defaultMeta: { service: 'facebook-ads-mcp' },
transports: [
// Write all logs to console
new winston.transports.Console({
format: winston.format.combine(
winston.format.colorize(),
winston.format.printf(
info => `${info.timestamp} ${info.level}: ${info.message}`
)
)
})
]
});
// Add file transport in production
if (config.NODE_ENV === 'production') {
logger.add(new winston.transports.File({
filename: 'logs/error.log',
level: 'error',
maxsize: 10485760, // 10MB
maxFiles: 5
}));
logger.add(new winston.transports.File({
filename: 'logs/combined.log',
maxsize: 10485760, // 10MB
maxFiles: 5
}));
}
// Create a stream object for Morgan
logger.stream = {
write: message => logger.info(message.trim())
};
module.exports = logger;