UNPKG

@fran-834/gs-microservice-core

Version:

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

52 lines (51 loc) 1.89 kB
import * as winston from "winston"; import DailyRotateFile from "winston-daily-rotate-file"; import dotenvconf from "dotenv"; dotenvconf.config(); 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: process.env.LOG_LEVEL ?? "info", format: combine(timestamp(), json()), defaultMeta: { service: process.env.SERVICE_NAME ?? "unknown-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;