@future-widget-lab/logger
Version:
A good enough logger for client-side oriented applications.
156 lines (152 loc) • 5.16 kB
JavaScript
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