47 lines
892 B
JavaScript
47 lines
892 B
JavaScript
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;
|