UNPKG

@future-widget-lab/logger

Version:

A good enough logger for client-side oriented applications.

156 lines (152 loc) 5.16 kB
import log from 'loglevel'; /** * @description * Use this helper to determine if the given tag should be logged as a debug log. */ var shouldDebug = function shouldDebug(options) { var _window$location$sear; var tag = options.tag, debugSearchParameterName = options.debugSearchParameterName, allTag = options.allTag; if (!window) { return false; } var serializedSearchParameters = (_window$location$sear = window.location.search) != null ? _window$location$sear : ''; var searchParams = new URLSearchParams(serializedSearchParameters); try { var target = searchParams.get(debugSearchParameterName); if (!target) { return false; } switch (true) { case target === allTag: { return true; } case typeof target === 'string': { return target.split(',').includes(tag); } default: { return false; } } } catch (_unused) { return false; } }; var createLogger = function createLogger(options) { var level = options.level, _options$allTag = options.allTag, allTag = _options$allTag === void 0 ? 'all' : _options$allTag, _options$debugSearchP = options.debugSearchParameterName, debugSearchParameterName = _options$debugSearchP === void 0 ? 'debug' : _options$debugSearchP, _options$shouldDebug = options.shouldDebug, shouldDebug$1 = _options$shouldDebug === void 0 ? shouldDebug : _options$shouldDebug, _options$debugEmoji = options.debugEmoji, debugEmoji = _options$debugEmoji === void 0 ? '🕵' : _options$debugEmoji, _options$errorEmoji = options.errorEmoji, errorEmoji = _options$errorEmoji === void 0 ? '📕' : _options$errorEmoji, _options$infoEmoji = options.infoEmoji, infoEmoji = _options$infoEmoji === void 0 ? '📘' : _options$infoEmoji, _options$traceEmoji = options.traceEmoji, traceEmoji = _options$traceEmoji === void 0 ? '📓' : _options$traceEmoji, _options$warnEmoji = options.warnEmoji, warnEmoji = _options$warnEmoji === void 0 ? '📒' : _options$warnEmoji, onMessage = options.onMessage, onAfterMessage = options.onAfterMessage; log.setDefaultLevel(level); var logger = { debug: function debug(tag, object, message) { if (!shouldDebug$1({ tag: tag, allTag: allTag, debugSearchParameterName: debugSearchParameterName })) { return; } var timestamp = new Date().toISOString(); var debugMessage = onMessage ? onMessage({ level: 'DEBUG', timestamp: timestamp, payload: object, message: message }) : (debugEmoji || '🕵') + " [" + timestamp + "] [DEBUG] [" + tag + "] " + message; log.debug(debugMessage, object); onAfterMessage == null || onAfterMessage({ level: 'DEBUG', timestamp: timestamp, payload: object, message: message }); }, error: function error(object, message) { var timestamp = new Date().toISOString(); var errorMessage = onMessage ? onMessage({ level: 'ERROR', timestamp: timestamp, payload: object, message: message }) : (errorEmoji || '📕') + " [" + timestamp + "] [ERROR] " + message; log.error(errorMessage, object); onAfterMessage == null || onAfterMessage({ level: 'ERROR', timestamp: timestamp, payload: object, message: message }); }, info: function info(object, message) { var timestamp = new Date().toISOString(); var infoMessage = onMessage ? onMessage({ level: 'INFO', timestamp: timestamp, payload: object, message: message }) : (infoEmoji || '📘') + " [" + timestamp + "] [INFO] " + message; log.info(infoMessage, object); onAfterMessage == null || onAfterMessage({ level: 'INFO', timestamp: timestamp, payload: object, message: message }); }, trace: function trace(object, message) { var timestamp = new Date().toISOString(); var traceMessage = onMessage ? onMessage({ level: 'TRACE', timestamp: timestamp, payload: object, message: message }) : (traceEmoji || '📓') + " [" + timestamp + "] [TRACE] " + message; log.trace(traceMessage, object); onAfterMessage == null || onAfterMessage({ level: 'TRACE', timestamp: timestamp, payload: object, message: message }); }, warn: function warn(object, message) { var timestamp = new Date().toISOString(); var warningMessage = onMessage ? onMessage({ level: 'WARN', timestamp: timestamp, payload: object, message: message }) : (warnEmoji || '📒') + " [" + timestamp + "] [WARN] " + message; log.warn(warningMessage, object); onAfterMessage == null || onAfterMessage({ level: 'WARN', timestamp: timestamp, payload: object, message: warningMessage }); } }; return logger; }; export { createLogger }; //# sourceMappingURL=logger.esm.js.map