12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /** @typedef {"info" | "warning" | "error"} LogLevel */
- /** @type {LogLevel} */
- var logLevel = "info";
- function dummy() {}
- /**
- * @param {LogLevel} level log level
- * @returns {boolean} true, if should log
- */
- function shouldLog(level) {
- var shouldLog =
- (logLevel === "info" && level === "info") ||
- (["info", "warning"].indexOf(logLevel) >= 0 && level === "warning") ||
- (["info", "warning", "error"].indexOf(logLevel) >= 0 && level === "error");
- return shouldLog;
- }
- /**
- * @param {(msg?: string) => void} logFn log function
- * @returns {(level: LogLevel, msg?: string) => void} function that logs when log level is sufficient
- */
- function logGroup(logFn) {
- return function (level, msg) {
- if (shouldLog(level)) {
- logFn(msg);
- }
- };
- }
- /**
- * @param {LogLevel} level log level
- * @param {string|Error} msg message
- */
- module.exports = function (level, msg) {
- if (shouldLog(level)) {
- if (level === "info") {
- console.log(msg);
- } else if (level === "warning") {
- console.warn(msg);
- } else if (level === "error") {
- console.error(msg);
- }
- }
- };
- var group = console.group || dummy;
- var groupCollapsed = console.groupCollapsed || dummy;
- var groupEnd = console.groupEnd || dummy;
- module.exports.group = logGroup(group);
- module.exports.groupCollapsed = logGroup(groupCollapsed);
- module.exports.groupEnd = logGroup(groupEnd);
- /**
- * @param {LogLevel} level log level
- */
- module.exports.setLogLevel = function (level) {
- logLevel = level;
- };
- /**
- * @param {Error} err error
- * @returns {string} formatted error
- */
- module.exports.formatError = function (err) {
- var message = err.message;
- var stack = err.stack;
- if (!stack) {
- return message;
- } else if (stack.indexOf(message) < 0) {
- return message + "\n" + stack;
- } else {
- return stack;
- }
- };
|