UNPKG

@overture-stack/lyric

Version:
43 lines (42 loc) 1.39 kB
import { createLogger, format, transports } from 'winston'; /** * Get a Logger instance for log messages * @param config logger configuration * @returns functions to log messages based on each log level */ export const getLogger = (config) => { const transportList = []; const { combine, timestamp, colorize, printf } = format; // console transport const consoleLog = new transports.Console({ format: combine(timestamp(), colorize(), printf(({ timestamp, level, message }) => `${timestamp} [${level}]: ${message}`)), }); transportList.push(consoleLog); // file transport if (config.file) { const fileLog = new transports.File({ filename: 'logs.log' }); transportList.push(fileLog); } const logger = createLogger({ level: config.level || 'info', transports: transportList, }); const log = (...message) => { const fullMessage = message.join(' - '); return fullMessage; }; return { debug: (...messages) => { return logger.debug(log(...messages)); }, warn: (...messages) => { return logger.warn(log(...messages)); }, info: (...messages) => { return logger.info(log(...messages)); }, error: (...messages) => { return logger.error(log(...messages)); }, }; };