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
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;
|
|
}
|
|
} |