UNPKG

@sap/cli-core

Version:

Command-Line Interface (CLI) Core Module

59 lines (58 loc) 2.03 kB
import { LogLevel } from "../types.js"; const LogLevel2Console = { [LogLevel.INACTIVE]: "inactive", [LogLevel.ERROR]: "error", [LogLevel.WARN]: "warn", [LogLevel.INFO]: "info", [LogLevel.DEBUG]: "debug", [LogLevel.TRACE]: "info", }; let logLevel = LogLevel.INACTIVE; let loggers; let customLogger; export const configure = ({ logLevel: newLogLevel, loggers: newLoggers, customLogger: newCustomLogger, }) => { if (newLogLevel) { logLevel = newLogLevel; } if (newLoggers === "RESET") { loggers = undefined; } else if (newLoggers) { loggers = newLoggers; } if (newCustomLogger === "RESET") { customLogger = undefined; } else if (newCustomLogger) { customLogger = newCustomLogger; } }; const logMessage = (namespace, level) => (...args) => { if (level <= logLevel && (loggers ? loggers.test(namespace) : true)) { // @ts-expect-error ts(7053) // eslint-disable-next-line customLogger?.[LogLevel2Console[level]] ? // @ts-expect-error ts(7053) customLogger[LogLevel2Console[level]](...args) : // @ts-expect-error ts(7053) // eslint-disable-next-line console[LogLevel2Console[level]](...[ `[${namespace}:${level === LogLevel.TRACE ? "trace" : LogLevel2Console[level]}:${new Date().toISOString()}] ${args[0]}`, ...args.slice(1), ]); } }; export const get = (namespace) => { return { output: customLogger?.output ? customLogger.output : // eslint-disable-next-line (...args) => console.log(...args), error: logMessage(namespace, LogLevel.ERROR), warn: logMessage(namespace, LogLevel.WARN), info: logMessage(namespace, LogLevel.INFO), log: logMessage(namespace, LogLevel.INFO), debug: logMessage(namespace, LogLevel.DEBUG), trace: logMessage(namespace, LogLevel.TRACE), }; };