UNPKG

@arcana/ca-sdk

Version:

Arcana Network's chain abstraction SDK for unified balance in Web3 apps

77 lines (76 loc) 2.2 kB
export const LOG_LEVEL = { DEBUG: 1, ERROR: 4, INFO: 2, NOLOGS: 5, WARNING: 3, }; export const setExceptionReporter = (reporter) => { state.exceptionReporter = reporter; }; const sendException = (msg) => { if (state.exceptionReporter) { state.exceptionReporter(msg); } }; export const setLogLevel = (level) => { state.logLevel = level; }; export const getLogger = () => { return state.logger; }; class Logger { constructor() { this.prefix = "XAR_CA_SDK"; } consoleLog(level, message, params) { if (level < state.logLevel) { return; } switch (level) { case LOG_LEVEL.DEBUG: console.debug(`[DEBUG]`, message, params); break; case LOG_LEVEL.ERROR: console.error(`[ERROR]`, message, params); break; case LOG_LEVEL.INFO: console.info(`[INFO]`, message, params); break; case LOG_LEVEL.WARNING: console.warn(`[WARN]`, message, params); break; default: console.log(`[LOG]`, message, params); } } debug(message, params = {}) { this.internalLog(LOG_LEVEL.DEBUG, message, params); } error(message, err) { if (err instanceof Error) { this.internalLog(LOG_LEVEL.ERROR, message, err.message); sendException(JSON.stringify({ error: err.message, message })); return; } if (typeof err == "string") { this.internalLog(LOG_LEVEL.ERROR, message, err); sendException(JSON.stringify({ error: err, message })); } } info(message, params = {}) { this.internalLog(LOG_LEVEL.INFO, message, params); } internalLog(level, message, params) { const logMessage = `[${this.prefix}] Msg: ${message}\n`; this.consoleLog(level, logMessage, params); } warn(message, params = {}) { this.internalLog(LOG_LEVEL.WARNING, message, params); } } const state = { exceptionReporter: null, logger: new Logger(), logLevel: LOG_LEVEL.NOLOGS, };