UNPKG

kafka-pub-sub

Version:

An application which is designed based on apache kafka pub-sub.

57 lines (52 loc) 1.74 kB
const { logLevel } = require('kafkajs'); const winston = require('winston'); /** * Converts a log level from our custom format to the corresponding Winston log level. * * @param {string} level - The log level to be converted. * @return {string} The corresponding Winston log level. */ const toWinstonLogLevel = (level) => { switch (level) { case logLevel.ERROR: case logLevel.NOTHING: return 'error'; case logLevel.WARN: return 'warn'; case logLevel.INFO: return 'info'; case logLevel.DEBUG: return 'debug'; default: return 'all'; } }; /** * Creates a Winston Logger instance with the specified log level and transports. * * @param {string} logLevel - The log level for the logger instance. * @return {function} - A function that can be used to log data with the configured logger. * The function takes in an object with the following properties: * - namespace: A namespace for the log. * - level: The log level for the current log. * - label: A label for the log. * - log: An object containing the log data. */ // eslint-disable-next-line no-shadow const WinstonLogCreator = (logLevel) => { const logger = winston.createLogger({ level: toWinstonLogLevel(logLevel), transports: [new winston.transports.Console(), new winston.transports.File({ filename: 'kafka.log' })], }); return ({ namespace, level, label, log }) => { const { message, ...extra } = log; logger.log({ namespace, label, level: toWinstonLogLevel(level), message, extra, }); }; }; module.exports = WinstonLogCreator;