import * as winston from 'winston'; | |
import appConfig from '../config/app.js'; | |
const levels = { | |
error: 0, | |
warn: 1, | |
http: 2, | |
info: 3, | |
debug: 4, | |
}; | |
const colors = { | |
error: 'red', | |
warn: 'yellow', | |
info: 'green', | |
http: 'magenta', | |
debug: 'white', | |
}; | |
winston.addColors(colors); | |
const format = winston.format.combine( | |
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }), | |
winston.format.colorize({ all: true }), | |
winston.format.printf( | |
(info) => `${info.timestamp} [${info.level}]: ${info.message}` | |
) | |
); | |
const transports = [ | |
new winston.transports.Console(), | |
new winston.transports.File({ | |
filename: 'logs/error.log', | |
level: 'error', | |
}), | |
new winston.transports.File({ filename: 'logs/server.log' }), | |
]; | |
export const logger = winston.createLogger({ | |
level: appConfig.logLevel, | |
levels, | |
format, | |
transports, | |
}); | |
export default logger; | |