js-console-logger
Version:
A configurable, lightweight, opinionated JavaScript logger.
144 lines (143 loc) • 4.66 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var types_1 = require("./types");
// tslint:disable-next-line:no-empty
var noop = function () { };
var loggerConfig = {
consoleLevel: types_1.LogLevel.INFO,
disableConsole: false,
disableReport: true,
reportFn: noop,
reportLevel: types_1.LogLevel.ERROR,
};
var loggerInfo = {
debug: {
levelCode: 2,
levelTagColor: 'green',
},
error: {
levelCode: 5,
levelTagColor: 'red',
},
info: {
levelCode: 3,
levelTagColor: 'cornflowerblue',
},
trace: {
levelCode: 1,
levelTagColor: 'yellow',
},
warn: {
levelCode: 4,
levelTagColor: 'orange',
},
};
var logLevels = Object.keys(loggerInfo);
var getTagStyle = function (color) { return "background-color: " + color + "; font-size:10px; color: white; padding: 1px 5px;"; };
var consoleLoggerFn = function (level, name, msg, data) {
if (data === void 0) { data = ''; }
window.console[level]("%c" + level.toUpperCase() + "%c" + name.toUpperCase(), getTagStyle(loggerInfo[level].levelTagColor), getTagStyle('indigo'), msg, data);
};
var log = function (level, name, msg, data) {
if (data === void 0) { data = ''; }
if (logLevels.includes(level)) {
var levelCode = loggerInfo[level].levelCode;
var isAboveConsoleLevel = loggerInfo[loggerConfig.consoleLevel].levelCode <= levelCode;
var shouldConsole = !loggerConfig.disableConsole && isAboveConsoleLevel;
var isAboveReportLevel = loggerInfo[loggerConfig.reportLevel].levelCode <= levelCode;
var shouldReport = !loggerConfig.disableReport && isAboveReportLevel;
var obj = {
data: data,
level: level,
msg: msg,
name: name,
};
if (shouldConsole) {
consoleLoggerFn(level, name, msg, data);
}
if (shouldReport) {
loggerConfig.reportFn(obj);
}
}
/* Not reachable in TS
else {
consoleLogger.error('Logger', `Invalid logger call: ${level}`, {});
}
*/
};
var getConsoleLevel = function () { return loggerConfig.consoleLevel; };
var getReportLevel = function () { return loggerConfig.reportLevel; };
var getDisableConsole = function () { return loggerConfig.disableConsole; };
var getDisableReport = function () { return loggerConfig.disableReport; };
var setConsoleLevel = function (level) {
if (logLevels.includes(level)) {
loggerConfig.consoleLevel = level;
log(types_1.LogLevel.INFO, 'Logger', "Log level set to " + level);
}
/* Not reachable in TS
else {
log(LogLevel.ERROR, 'Logger', `Invalid level: ${level}`);
}
*/
return getConsoleLevel();
};
var setReportLevel = function (level) {
if (logLevels.includes(level)) {
loggerConfig.reportLevel = level;
log(types_1.LogLevel.INFO, 'Logger', "Log level set to " + level);
}
/* Not reachable in TS
else {
log(LogLevel.ERROR, 'Logger', `Invalid level: ${level}`);
}
*/
return getReportLevel();
};
var setDisableConsole = function (flag) {
loggerConfig.disableConsole = flag;
return getDisableConsole();
};
var setDisableReport = function (flag) {
loggerConfig.disableReport = flag;
return getDisableReport();
};
var setReportFn = function (fn) {
loggerConfig.reportFn = fn;
};
exports.consoleConfig = {
getConsoleLevel: getConsoleLevel,
getDisableConsole: getDisableConsole,
getDisableReport: getDisableReport,
getReportLevel: getReportLevel,
setConsoleLevel: setConsoleLevel,
setDisableConsole: setDisableConsole,
setDisableReport: setDisableReport,
setReportFn: setReportFn,
setReportLevel: setReportLevel,
};
var consoleLogger = {
debug: function (name, msg, data) {
if (data === void 0) { data = ''; }
return log(types_1.LogLevel.DEBUG, name, msg, data);
},
error: function (name, msg, data) {
if (data === void 0) { data = ''; }
return log(types_1.LogLevel.ERROR, name, msg, data);
},
info: function (name, msg, data) {
if (data === void 0) { data = ''; }
return log(types_1.LogLevel.INFO, name, msg, data);
},
trace: function (name, msg, data) {
if (data === void 0) { data = ''; }
return log(types_1.LogLevel.TRACE, name, msg, data);
},
warn: function (name, msg, data) {
if (data === void 0) { data = ''; }
return log(types_1.LogLevel.WARN, name, msg, data);
},
};
if (window) {
window.logger = consoleLogger;
}
exports.default = consoleLogger;
;