UNPKG

structlog

Version:

Structured logging tool for Node.js.

99 lines 10.5 kB
"use strict"; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _StructuredLogger_instances, _StructuredLogger_log, _StructuredLogger_getCurrentTimestampInDesiredFormat, _StructuredLogger_enrichTags; Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = exports.StructuredLogger = void 0; const uuid_1 = require("./utils/uuid"); const caller_1 = require("./lib/caller"); const types_1 = require("./types/types"); const utils_1 = require("./utils/utils"); const worker_threads_1 = require("worker_threads"); const timestampConversion = { [types_1.TimestampFormat.Iso]: 'toISOString', [types_1.TimestampFormat.Utc]: 'toUTCString', [types_1.TimestampFormat.Gmt]: 'toGMTString', [types_1.TimestampFormat.TimeString]: 'toTimeString', [types_1.TimestampFormat.LocaleString]: 'toLocaleString', [types_1.TimestampFormat.UnixTimestamp]: 'getTime', }; const DEFAULT_LOG_FORMAT = '{timestamp} [{type}] {message} [{path}] {tags}'; const DEFAULT_PATH_FORMAT = '{filePath}:{lineNumber}'; class StructuredLogger { constructor(options = {}) { _StructuredLogger_instances.add(this); const defaultOptions = { timestampFormat: types_1.TimestampFormat.Iso, logFormat: DEFAULT_LOG_FORMAT, pathFormat: DEFAULT_PATH_FORMAT, pathStackDepth: 0, useColors: false, useThreadTagsExtension: false, useLogIdExtension: false }; this.config = { ...defaultOptions, ...options }; this.caller = new caller_1._InternalCaller(this.constructor.name); } debug(message, tags) { const caller = this.caller.getCaller(this.config.pathStackDepth); __classPrivateFieldGet(this, _StructuredLogger_instances, "m", _StructuredLogger_log).call(this, types_1.LogType.Debug, caller, message, tags); } info(message, tags) { const caller = this.caller.getCaller(this.config.pathStackDepth); __classPrivateFieldGet(this, _StructuredLogger_instances, "m", _StructuredLogger_log).call(this, types_1.LogType.Info, caller, message, tags); } log(message, tags) { const caller = this.caller.getCaller(this.config.pathStackDepth); __classPrivateFieldGet(this, _StructuredLogger_instances, "m", _StructuredLogger_log).call(this, types_1.LogType.Log, caller, message, tags); } error(message, tags) { const caller = this.caller.getCaller(this.config.pathStackDepth); __classPrivateFieldGet(this, _StructuredLogger_instances, "m", _StructuredLogger_log).call(this, types_1.LogType.Error, caller, message, tags); } warn(message, tags) { const caller = this.caller.getCaller(this.config.pathStackDepth); __classPrivateFieldGet(this, _StructuredLogger_instances, "m", _StructuredLogger_log).call(this, types_1.LogType.Warn, caller, message, tags); } } exports.StructuredLogger = StructuredLogger; _StructuredLogger_instances = new WeakSet(), _StructuredLogger_log = function _StructuredLogger_log(type, caller, message, tags = {}) { const tagsString = (0, utils_1.parseTagsAsString)(__classPrivateFieldGet(this, _StructuredLogger_instances, "m", _StructuredLogger_enrichTags).call(this, tags)); const timestamp = __classPrivateFieldGet(this, _StructuredLogger_instances, "m", _StructuredLogger_getCurrentTimestampInDesiredFormat).call(this); let path = ''; if (caller) { path = this.config.pathFormat; path = path.replace('{filePath}', caller.filePath); path = path.replace('{lineNumber}', caller.lineNumber.toString()); path = path.replace('{functionName}', caller.functionName); path = path.replace('{methodName}', caller.methodName); path = path.replace('{typeName}', caller.typeName); } let log = this.config.logFormat; log = log.replace('{timestamp}', timestamp); log = log.replace('{message}', message); log = log.replace('{type}', type); log = log.replace('{path}', path); log = log.replace('{tags}', tagsString); if (this.config.useColors) { log = (0, utils_1.colorText)(type, log); } console[type](log); }, _StructuredLogger_getCurrentTimestampInDesiredFormat = function _StructuredLogger_getCurrentTimestampInDesiredFormat() { const date = new Date(); return date[timestampConversion[this.config.timestampFormat] ?? 'toIsoString'](); }, _StructuredLogger_enrichTags = function _StructuredLogger_enrichTags(tags) { const enrichmentTags = {}; if (this.config.useThreadTagsExtension) { enrichmentTags['thread'] = worker_threads_1.isMainThread ? 'MAIN' : worker_threads_1.threadId; } if (this.config.useLogIdExtension) { enrichmentTags['logId'] = new uuid_1.UUIDT().toString(); } return { ...enrichmentTags, ...tags }; }; // for easy use, export a ready instance of StructuredLogger with the default config exports.logger = new StructuredLogger(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsdUNBQXFDO0FBQ3JDLHlDQUFpRTtBQUNqRSx5Q0FBNkU7QUFDN0UseUNBQTREO0FBQzVELG1EQUF1RDtBQUV2RCxNQUFNLG1CQUFtQixHQUFvQztJQUMzRCxDQUFDLHVCQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsYUFBYTtJQUNwQyxDQUFDLHVCQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsYUFBYTtJQUNwQyxDQUFDLHVCQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsYUFBYTtJQUNwQyxDQUFDLHVCQUFlLENBQUMsVUFBVSxDQUFDLEVBQUUsY0FBYztJQUM1QyxDQUFDLHVCQUFlLENBQUMsWUFBWSxDQUFDLEVBQUUsZ0JBQWdCO0lBQ2hELENBQUMsdUJBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRSxTQUFTO0NBQzNDLENBQUE7QUFFRCxNQUFNLGtCQUFrQixHQUFHLGdEQUFnRCxDQUFBO0FBQzNFLE1BQU0sbUJBQW1CLEdBQUcseUJBQXlCLENBQUE7QUFDckQsTUFBYSxnQkFBZ0I7SUFLM0IsWUFBWSxVQUErQixFQUFFOztRQUMzQyxNQUFNLGNBQWMsR0FBZTtZQUNqQyxlQUFlLEVBQUUsdUJBQWUsQ0FBQyxHQUFHO1lBQ3BDLFNBQVMsRUFBRSxrQkFBa0I7WUFDN0IsVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixjQUFjLEVBQUUsQ0FBQztZQUNqQixTQUFTLEVBQUUsS0FBSztZQUNoQixzQkFBc0IsRUFBRSxLQUFLO1lBQzdCLGlCQUFpQixFQUFFLEtBQUs7U0FDekIsQ0FBQTtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFBO1FBQy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx3QkFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsSUFBYztRQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ2hFLHVCQUFBLElBQUksMERBQUssTUFBVCxJQUFJLEVBQU0sZUFBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLElBQWM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUNoRSx1QkFBQSxJQUFJLDBEQUFLLE1BQVQsSUFBSSxFQUFNLGVBQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBRUQsR0FBRyxDQUFDLE9BQWUsRUFBRSxJQUFjO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDaEUsdUJBQUEsSUFBSSwwREFBSyxNQUFULElBQUksRUFBTSxlQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsSUFBYztRQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ2hFLHVCQUFBLElBQUksMERBQUssTUFBVCxJQUFJLEVBQU0sZUFBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLElBQWM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUNoRSx1QkFBQSxJQUFJLDBEQUFLLE1BQVQsSUFBSSxFQUFNLGVBQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0NBc0RGO0FBakdELDRDQWlHQztvR0FuREcsSUFBYSxFQUNiLE1BQWdDLEVBQ2hDLE9BQWUsRUFDZixPQUFnQixFQUFFO0lBRWxCLE1BQU0sVUFBVSxHQUFHLElBQUEseUJBQWlCLEVBQUMsdUJBQUEsSUFBSSxpRUFBWSxNQUFoQixJQUFJLEVBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUM1RCxNQUFNLFNBQVMsR0FBRyx1QkFBQSxJQUFJLHlGQUFvQyxNQUF4QyxJQUFJLENBQXNDLENBQUE7SUFFNUQsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBRWIsSUFBSSxNQUFNLEVBQUU7UUFDVixJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUE7UUFDN0IsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNsRCxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQ2pFLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUMxRCxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3RELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7S0FDbkQ7SUFHRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQTtJQUMvQixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDM0MsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZDLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNqQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDakMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBRXZDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDekIsR0FBRyxHQUFHLElBQUEsaUJBQVMsRUFBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7S0FDM0I7SUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDcEIsQ0FBQztJQUdDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7SUFDdkIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFBO0FBQ2xGLENBQUMsdUVBRVksSUFBYTtJQUN4QixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUE7SUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFO1FBQ3RDLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyw2QkFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHlCQUFRLENBQUE7S0FDNUQ7SUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUU7UUFDakMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksWUFBSyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUE7S0FDakQ7SUFFRCxPQUFPLEVBQUUsR0FBRyxjQUFjLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQTtBQUN2QyxDQUFDO0FBR0gsb0ZBQW9GO0FBQ3ZFLFFBQUEsTUFBTSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQSJ9