UNPKG

@fran-834/gs-microservice-core

Version:

Core package for Node.js microservices by Galduria Software. Includes security, logging, validation, and error handling middlewares.

50 lines (49 loc) 1.78 kB
import * as winston from "winston"; import DailyRotateFile from "winston-daily-rotate-file"; const { combine, timestamp, json } = winston.format; /** * Transport for rotating combined logs. */ const fileCombinedRotateTransport = new DailyRotateFile({ filename: "./logs/combined-%DATE%.log", datePattern: "YYYY-MM-DD", maxFiles: "14d", level: "info", }); /** * Transport for rotating error logs. */ const fileErrorRotateTransport = new DailyRotateFile({ filename: "./logs/error-%DATE%.log", datePattern: "YYYY-MM-DD", level: "error", maxFiles: "14d", }); /** * Winston logger instance with daily rotate file transports for combined and error logs. * Handles exceptions and rejections as well. * @type {import('winston').Logger} */ const logger = winston.loggers.add("appLogger", { level: "info", format: combine(timestamp(), json()), defaultMeta: { service: "user-service" }, transports: [ new winston.transports.Console({ format: winston.format.simple() }), // // - Write all logs with importance level of `error` or less to `error.log` // - Write all logs with importance level of `info` or less to `combined.log` // fileErrorRotateTransport, fileCombinedRotateTransport, ], exceptionHandlers: [ new winston.transports.Console({ format: winston.format.combine() }), new DailyRotateFile({ filename: "./logs/exceptions-%DATE%.log", datePattern: "YYYY-MM-DD", maxFiles: "14d" }), ], rejectionHandlers: [ new winston.transports.Console({ format: winston.format.combine() }), new DailyRotateFile({ filename: "./logs/rejections-%DATE%.log", datePattern: "YYYY-MM-DD", maxFiles: "14d" }), ], }); export default logger;