lndhub/utils/logger.js

61 lines
1.3 KiB
JavaScript

/* + + + + + + + + + + + + + + + + + + + + +
* Logger
* -----------
* a winston instance wrapper
*
* Author: Michael Samonte
*
+ + + + + + + + + + + + + + + + + + + + + */
let fs = require('fs');
import { createLogger, format, transports } from 'winston';
/* + + + + + + + + + + + + + + + + + + + + +
// Start
+ + + + + + + + + + + + + + + + + + + + + */
const { combine, timestamp, printf } = format;
const logFormat = printf((info) => {
return `${info.timestamp} : ${info.level}: [${info.label}] : ${info.message}`;
});
const logger = createLogger({
level: 'info',
format: combine(timestamp(), logFormat),
transports: [
new transports.Console({
level: 'error',
}),
new transports.Console(),
],
});
/**
* create logs folder if it does not exist
*/
if (!fs.existsSync('logs')) {
fs.mkdirSync('logs');
}
function log(label, message) {
logger.log({
level: 'info',
label: label,
message: JSON.stringify(message),
});
}
/**
* TODO: we can do additional reporting here
* @param {string} label group label
* @param {string} message log message
*/
function error(label, message) {
console.error(new Date(), label, message);
logger.log({
level: 'error',
label: label,
message: JSON.stringify(message),
});
}
exports.log = log;
exports.error = error;