UNPKG

@vizydrop/logger

Version:

Vizydrop predefined logger based on winston v3

79 lines (71 loc) 2.51 kB
/********************************************************************* * © 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};