UNPKG

winston-asynchandler

Version:

Production-grade async error handler for Express with Winston logger and standard API responses.

39 lines (33 loc) 972 B
import { createLogger, format, transports } from "winston"; import fs from "fs"; import path from "path"; const { combine, timestamp, printf, colorize } = format; const logDir = path.resolve("logs"); if (!fs.existsSync(logDir)) { fs.mkdirSync(logDir); } const logFormat = printf(({ level, message, timestamp }) => { return `[${timestamp}] ${level}: ${message}`; }); export const logger = createLogger({ level: "info", format: combine(timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), logFormat), transports: [ new transports.File({ filename: path.join(logDir, "error.log"), level: "error", }), new transports.File({ filename: path.join(logDir, "combined.log") }), ], }); if (process.env.NODE_ENV !== "production") { logger.add( new transports.Console({ format: combine( colorize(), timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), logFormat ), }) ); }