You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.3 KiB
JavaScript

const winston = require('winston');
const LokiTransport = require('winston-loki');
const context = require('./context');
const moment = require('moment-timezone');
module.exports = {
create: (config) => {
var transports = [
new winston.transports.Console({})
]
const lokiConfig = {
host: config.prodHost,
labels: {
app: config.appTag
},
json: true,
format: winston.format.json(),
onConnectionError: (err) => console.error(err)
}
if(config.prod) {
transports.push(new LokiTransport(lokiConfig));
}
const logger = winston.createLogger({
format: winston.format.combine(
winston.format((info, opts) => {
try {
info.requestId = context.getRequestId();
info.metadata = context.getMetadata();
} catch(error) {
//no context available, ignore attempt to attach requestId
}
info.time = moment();
return info;
})(),
winston.format.json()
),
transports: transports
});
return logger;
}
}