Create Logger.ts

This commit is contained in:
2022-03-06 16:40:17 +07:00
parent ad56f8d977
commit f2a9112a06

64
src/libs/Logger.ts Normal file
View File

@@ -0,0 +1,64 @@
import winston from 'winston';
const levels = {
critical: 0,
error: 1,
alert: 2,
warn: 3,
info: 4,
http: 5,
debug: 6,
};
const level = () => {
const env = process.env.NODE_ENV || 'development';
const isDevelopment = env === 'development';
return isDevelopment ? 'debug' : 'warn';
};
const colors = {
critical: 'red',
error: 'red',
alert: 'red',
warn: 'yellow',
info: 'green',
http: 'magenta',
debug: 'white',
};
winston.addColors(colors);
const consoleFormat = 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 format = winston.format.combine(
winston.format.timestamp({
format: new Date().toISOString()
}),
winston.format.json()
)
const transports = [
new winston.transports.Console({
format: consoleFormat
}),
new winston.transports.File({
filename: 'logs/error.log',
level: 'error',
}),
new winston.transports.File({ filename: 'logs/all.log' }),
];
const Logger = winston.createLogger({
level: level(),
levels,
format,
transports,
});
export default Logger;