UNPKG

inference-server

Version:

Libraries and server to build AI applications. Adapters to various native bindings allowing local inference. Integrate it with your application, or use as a microservice.

98 lines 3.2 kB
import chalk from 'chalk'; export const LogLevels = { error: 'error', warn: 'warn', info: 'info', debug: 'debug', verbose: 'verbose', }; export function withLogMeta(logger, meta) { return (level, message, extraMeta = {}) => { logger(level, message, { ...meta, ...extraMeta }); }; } export function createSublogger(minLevelOrLogger = LogLevels.warn) { if (minLevelOrLogger) { return typeof minLevelOrLogger === 'string' ? createLogger(minLevelOrLogger) : minLevelOrLogger; } else { return createLogger(LogLevels.warn); } } export function createLogger(minLevel) { const levels = Object.keys(LogLevels).reverse(); const minLevelIndex = levels.indexOf(minLevel); return function log(level, message, meta) { const levelIndex = levels.indexOf(level); if (levelIndex >= minLevelIndex) { const formattedMessage = formatMessage(level, message, meta); switch (level) { case LogLevels.error: console.error(formattedMessage, meta?.error); break; case LogLevels.warn: console.warn(formattedMessage); break; case LogLevels.info: console.info(formattedMessage); break; case LogLevels.debug: case LogLevels.verbose: console.debug(formattedMessage); break; } } }; } function formatMessage(level, message, meta = {}) { const timestamp = new Date().toISOString().replace('T', ' ').substring(0, 22); let messageStr = `[${timestamp}]`; switch (level) { case LogLevels.error: messageStr += chalk.red(`[erro]`); break; case LogLevels.warn: messageStr += chalk.yellow(`[warn]`); break; case LogLevels.info: messageStr += chalk.white(`[info]`); break; case LogLevels.debug: messageStr += chalk.gray(`[debg]`); break; case LogLevels.verbose: messageStr += chalk.gray(`[verb]`); break; } if (meta?.sequence) { messageStr += ' ' + chalk.cyan(meta.sequence); } if (meta?.instance) { messageStr += ' ' + chalk.magenta(meta.instance); } else if (meta?.model) { messageStr += ' ' + chalk.magenta(meta.model); } if (meta?.task) { messageStr += ' ' + chalk.green(meta.task); } messageStr += ' ' + message; if (meta) { const { instance, sequence, model, task, elapsed, error, ...otherData } = meta; if (elapsed) { if (elapsed < 1000) { messageStr += ' ' + chalk.magenta(`+${elapsed.toFixed(2)}ms`); } else { messageStr += ' ' + chalk.magenta(`+${(elapsed / 1000).toFixed(2)}s`); } } if (Object.keys(otherData).length > 0) { messageStr += ' ' + JSON.stringify(otherData, null, 2); } } return messageStr; } //# sourceMappingURL=logger.js.map