@vizydrop/logger
Version:
Vizydrop predefined logger based on winston v3
79 lines (71 loc) • 2.51 kB
JavaScript
/*********************************************************************
* © Copyright IBM Corp. 2025
*********************************************************************/
const {convertErrors} = require(`./plugins/convertErrors`);
const {createCorrelationIdPlugin} = require(`./plugins/correlationId`);
const {createAdditionalFieldsPlugin} = require(`./plugins/additionalFields`);
function createLoggerWrapper({
logger,
correlationIdConfig,
additionalFieldsStorage,
}) {
const addCorrelationId = createCorrelationIdPlugin(correlationIdConfig);
const addAdditionalFields = createAdditionalFieldsPlugin(
additionalFieldsStorage,
);
const wrapper = {
log(level, message, ...params) {
let logMessage;
let logParams = [];
if (typeof message === `string`) {
logMessage = message;
logParams = params;
} else if (message && message.message) {
logMessage = message.message;
logParams = [message, ...params];
} else {
logMessage = `< message is missing >`;
logParams = [message, ...params];
}
return logger.log(
level,
logMessage,
...addAdditionalFields(
addCorrelationId(convertErrors(logParams)),
),
);
},
trace(...params) {
return wrapper.log(`trace`, ...params);
},
error(...params) {
return wrapper.log(`error`, ...params);
},
fatal(...params) {
return wrapper.log(`fatal`, ...params);
},
warn(...params) {
return wrapper.log(`warn`, ...params);
},
info(...params) {
return wrapper.log(`info`, ...params);
},
debug(...params) {
return wrapper.log(`debug`, ...params);
},
startTimer() {
const start = process.hrtime();
return {
done: (...params) => {
const [seconds, nanoseconds] = process.hrtime(start);
const time =
seconds * 1000 + Math.floor(nanoseconds / 1000000);
wrapper.info(...params, {durationMs: time});
},
};
},
additionalFields: additionalFieldsStorage,
};
return wrapper;
}
module.exports = {createLoggerWrapper};