UNPKG

starty

Version:

a lightweight framework which helps building modular and configurable Node.js applications

128 lines (102 loc) 2.21 kB
'use strict' function dateTimeMs(){ let dateTimeNow = new Date(); return dateTimeNow.toISOString(); } const logLevels = { INFO: 'INFO', DEBUG: 'DEBUG', WARN: 'WARN', ERROR: 'ERROR' } function log(loggerName, loggingLevel= logLevels.INFO, loggingSink){ const logName = loggerName; const logLevel = loggingLevel; const logSink = loggingSink; const logMsgTemplate = `[${dateTimeMs()}] `; function logMessage(level, msg){ return logMsgTemplate + `[${level}] [${logName}] ${msg}`; } /** * * @param {string} message */ function info(message){ logSink(logMessage(logLevels.INFO, message)); } /** * * @param {string} message */ function debug(message){ logSink(logMessage(logLevels.DEBUG, message)); } /** * * @param {string} message */ function warn(message){ logSink(logMessage(logLevels.WARN, message)); } /** * * @param {string} message */ function error(message){ logSink(logMessage(logLevels.ERROR, message)); } return { info, debug, error, warn } } function loggerBuilder(){ let logModuleName; /** * * @param {string} logName * @returns this */ function name(logName){ logModuleName = logName; return this; } let logModuleLevel; /** * * @param {string} logLevel * @returns this */ function level(logLevel){ logModuleLevel = logLevel; return this; } let logModuleSink; /** * * @param logSink * @returns this */ function logSink(logSink){ return this; } function build(){ return new log( logModuleName ?? '', logModuleLevel ?? logLevels.INFO, logModuleSink ?? (console.log) ); } return { name, level, logSink, build } } module.exports = { loggerBuilder, logLevels }