@overture-stack/lyric
Version:
Data Submission system
43 lines (42 loc) • 1.39 kB
JavaScript
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));
},
};
};