X-Git-Url: http://git.squeep.com/?p=urlittler;a=blobdiff_plain;f=src%2Flogger.js;fp=src%2Flogger.js;h=0000000000000000000000000000000000000000;hp=7c8e3cb3340c70ffa9aee40a7686f38dce99f25a;hb=9b51fcc5c03add770c30a242a34b3ff29bb5c904;hpb=254ea2414f0539d2ada998bb35778f4d031745ea diff --git a/src/logger.js b/src/logger.js deleted file mode 100644 index 7c8e3cb..0000000 --- a/src/logger.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict'; - -/** - * Log as JSON to stdout/stderr. - */ - -const common = require('./common'); - -// This is uncomfortable, but is the simplest way to let logging work for BigInts. -// TODO: revisit with better solution -BigInt.prototype.toJSON = function() { - return this.toString(); -} - -// Also uncomfortable -Object.defineProperty(Error.prototype, 'toJSON', { - configurable: true, - value: function () { - const result = {}; - const dupKey = function (key) { - // eslint-disable-next-line security/detect-object-injection - result[key] = this[key]; - }; - Object.getOwnPropertyNames(this).forEach(dupKey, this); - return result; - }, -}); - -const defaultOptions = { - ignoreBelowLevel: 'debug', - backend: console, -}; - -class Logger { - constructor(options = {}) { - common.setOptions(this, defaultOptions, options); - - this.logLevels = [ - 'error', - 'warn', - 'info', - 'log', - 'debug', - ]; - - const ignoreLevelIdx = this.logLevels.indexOf(this.ignoreBelowLevel); - this.logLevels.forEach((level) => { - // eslint-disable-next-line security/detect-object-injection - this[level] = (this.logLevels.indexOf(level) > ignoreLevelIdx) ? - () => {} : - Logger.levelTemplateFn(this.backend, level); - }); - } - - static levelTemplateFn(backend, level) { - return function (...args) { - // eslint-disable-next-line security/detect-object-injection - backend[level](Logger.payload(level, ...args)); - }; - } - - static payload(level, scope, message, data, ...other) { - return JSON.stringify({ - timestamp: Date.now(), - level: level, - scope: scope || '[unknown]', - message: message || '', - data: data || {}, - ...(other.length && { other }), - }); - } -} - -module.exports = Logger;