chore: Implement logger with winston library
This commit is contained in:
50
packages/backend/src/helpers/logger.ts
Normal file
50
packages/backend/src/helpers/logger.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import winston from 'winston'
|
||||
import appConfig from '../config/app'
|
||||
|
||||
const levels = {
|
||||
error: 0,
|
||||
warn: 1,
|
||||
info: 2,
|
||||
http: 3,
|
||||
debug: 4,
|
||||
}
|
||||
|
||||
const level = () => {
|
||||
return appConfig.appEnv === 'development' ? 'debug' : 'warn'
|
||||
}
|
||||
|
||||
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' }),
|
||||
]
|
||||
|
||||
const logger = winston.createLogger({
|
||||
level: level(),
|
||||
levels,
|
||||
format,
|
||||
transports,
|
||||
})
|
||||
|
||||
export default logger
|
14
packages/backend/src/helpers/morgan.ts
Normal file
14
packages/backend/src/helpers/morgan.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import morgan, { StreamOptions } from 'morgan';
|
||||
|
||||
import logger from './logger';
|
||||
|
||||
const stream: StreamOptions = {
|
||||
write: (message) => logger.http(message.substring(0, message.lastIndexOf('\n')))
|
||||
};
|
||||
|
||||
const morganMiddleware = morgan(
|
||||
":method :url :status :res[content-length] - :response-time ms",
|
||||
{ stream }
|
||||
);
|
||||
|
||||
export default morganMiddleware;
|
Reference in New Issue
Block a user