UNPKG

ydb-sdk

Version:

Node.js bindings for working with YDB API over gRPC

108 lines (107 loc) 4.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SimpleLogger = exports.setMockConsole = exports.LogLevel = exports.DEFAULT_LEVEL = exports.DEFAULT_ENV_KEY = void 0; exports.DEFAULT_ENV_KEY = 'YDB_LOG_LEVEL'; exports.DEFAULT_LEVEL = 'info'; var LogLevel; (function (LogLevel) { LogLevel["none"] = "none"; LogLevel["fatal"] = "fatal"; LogLevel["error"] = "error"; LogLevel["warn"] = "warn"; LogLevel["info"] = "info"; LogLevel["debug"] = "debug"; LogLevel["trace"] = "trace"; })(LogLevel || (exports.LogLevel = LogLevel = {})); /** * For unit tests purposes. */ let consoleOrMock = console; /** * **Only for unit tests purposes**. */ const setMockConsole = (mockConsole = console) => { consoleOrMock = mockConsole; }; exports.setMockConsole = setMockConsole; const silentLogFn = () => { }; const simpleLogFnBuilder = (level, detailedStackTrace) => { const LEVEL = level.toUpperCase(); // eslint-disable-next-line @typescript-eslint/no-use-before-define if (level === LogLevel.fatal) { // eslint-disable-next-line @typescript-eslint/no-use-before-define,no-param-reassign level = LogLevel.error; } return function log(objOrMsg, ...args) { const prefix = []; if (this.showTimestamp) { prefix.push(new Date().toISOString()); } if (this.showLevel) { prefix.push(LEVEL); } if (this.prefix) { prefix.push(this.prefix); } const prefixStr = prefix.length === 0 ? '' : `[${prefix.join(' ')}] `; if (typeof objOrMsg === 'object') { if (typeof args[0] === 'string') { // @ts-ignore // eslint-disable-next-line @typescript-eslint/no-use-before-define consoleOrMock[detailedStackTrace ? level : 'info'](`${prefixStr}%o ${args[0]}`, ...args.splice(1), objOrMsg); } else { // @ts-ignore // eslint-disable-next-line @typescript-eslint/no-use-before-define consoleOrMock[detailedStackTrace ? level : 'info'](prefix.length > 0 ? `${prefixStr}%o` : '%o', objOrMsg); } } else { // @ts-ignore // eslint-disable-next-line @typescript-eslint/no-use-before-define consoleOrMock[detailedStackTrace ? level : 'info'](`${prefixStr}${objOrMsg}`, ...args); } }; }; /** * The simplest logger class, with a minimal set of logging methods and the most simple output to the console. */ class SimpleLogger { constructor(options = {}) { var _a; this.fatal = silentLogFn; this.error = silentLogFn; this.warn = silentLogFn; this.info = silentLogFn; this.debug = silentLogFn; this.trace = silentLogFn; let { level, // eslint-disable-next-line prefer-const prefix, // eslint-disable-next-line prefer-const showTimestamp, // eslint-disable-next-line prefer-const showLevel, } = options; if (prefix) this.prefix = prefix; this.showTimestamp = showTimestamp !== null && showTimestamp !== void 0 ? showTimestamp : true; this.showLevel = showLevel !== null && showLevel !== void 0 ? showLevel : true; const envKey = (_a = options.envKey) !== null && _a !== void 0 ? _a : exports.DEFAULT_ENV_KEY; const envLevel = process.env[envKey]; // @ts-ignore level = envLevel === undefined ? level !== null && level !== void 0 ? level : LogLevel[exports.DEFAULT_LEVEL] : LogLevel[envLevel]; const detailedTraceStack = ['1', 'true'].indexOf(typeof process.env.YDB_DETAILED_TRACE_STACK === 'string' ? process.env.YDB_DETAILED_TRACE_STACK.toLowerCase() : 'false') !== -1; for (const lvl of Object.values(LogLevel)) { if (lvl === LogLevel.none) continue; // @ts-ignore this[lvl] = simpleLogFnBuilder(lvl, detailedTraceStack); if (lvl === level) break; } } } exports.SimpleLogger = SimpleLogger;