Node.js REST Service Logging - createLogger.js - 1

PHOTO EMBED

Fri Apr 14 2023 10:42:08 GMT+0000 (Coordinated Universal Time)

Saved by @mindplumber #javascript #nodejs

const { createLogger, format, transports } = require('winston');
const { combine, timestamp, json } = format;

const getLogFileName = (category) => {
  const date = new Date().toISOString().slice(0, 10);
  return `logs/${category}/${category}-${date}.log`;
};

const createCategoryLogger = (category) => {
  return createLogger({
    level: 'info',
    format: combine(timestamp(), json()),
    transports: [
      new transports.File({
        filename: getLogFileName(category),
        level: 'info',
        maxsize: 1024 * 1024 * 10, // 10MB
        maxFiles: 5,
        tailable: true,
      }),
      new transports.Console({
        level: 'debug',
        format: format.combine(format.colorize(), format.simple()),
      }),
    ],
  });
};

module.exports = createCategoryLogger;


content_copyCOPY

In this updated version of the `createLogger.js` file, we've added the `getLogFileName` function to generate log file names with timestamps. We've also parameterized the logger setup to accept a `category` parameter and create a logger instance for that category. Finally, we've updated the logger configuration to log messages in JSON format.