| import winston from 'winston'; | |
| import { config } from '../config'; | |
| const logFormat = winston.format.combine( | |
| winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), | |
| winston.format.errors({ stack: true }), | |
| winston.format.printf(({ timestamp, level, message, stack }) => { | |
| return `[${timestamp}] ${level.toUpperCase()}: ${stack || message}`; | |
| }) | |
| ); | |
| export const logger = winston.createLogger({ | |
| level: config.nodeEnv === 'production' ? 'info' : 'debug', | |
| format: logFormat, | |
| transports: [ | |
| new winston.transports.Console({ | |
| format: winston.format.combine( | |
| winston.format.colorize(), | |
| logFormat | |
| ), | |
| }), | |
| new winston.transports.File({ | |
| filename: 'logs/error.log', | |
| level: 'error', | |
| }), | |
| new winston.transports.File({ | |
| filename: 'logs/combined.log', | |
| }), | |
| ], | |
| }); | |