UNPKG

@datadog/browser-logs

Version:
125 lines 5.65 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = exports.STATUSES = exports.HandlerType = void 0; const browser_core_1 = require("@datadog/browser-core"); const isAuthorized_1 = require("./logger/isAuthorized"); const createErrorFieldFromRawError_1 = require("./createErrorFieldFromRawError"); exports.HandlerType = { console: 'console', http: 'http', silent: 'silent', }; exports.STATUSES = Object.keys(isAuthorized_1.StatusType); // note: it is safe to merge declarations as long as the methods are actually defined on the prototype // eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging, no-restricted-syntax class Logger { constructor(handleLogStrategy, name, handlerType = exports.HandlerType.http, level = isAuthorized_1.StatusType.debug, loggerContext = {}) { this.handleLogStrategy = handleLogStrategy; this.handlerType = handlerType; this.level = level; this.contextManager = (0, browser_core_1.createContextManager)('logger'); this.tags = []; this.contextManager.setContext(loggerContext); if (name) { this.contextManager.setContextProperty('logger', { name }); } } logImplementation(message, messageContext, status = isAuthorized_1.StatusType.info, error, handlingStack) { const sanitizedMessageContext = (0, browser_core_1.sanitize)(messageContext); let context; if (error !== undefined && error !== null) { const rawError = (0, browser_core_1.computeRawError)({ originalError: error, nonErrorPrefix: "Provided" /* NonErrorPrefix.PROVIDED */, source: browser_core_1.ErrorSource.LOGGER, handling: "handled" /* ErrorHandling.HANDLED */, startClocks: (0, browser_core_1.clocksNow)(), }); context = (0, browser_core_1.combine)({ error: (0, createErrorFieldFromRawError_1.createErrorFieldFromRawError)(rawError, { includeMessage: true }), }, rawError.context, sanitizedMessageContext); } else { context = sanitizedMessageContext; } this.handleLogStrategy({ message: (0, browser_core_1.sanitize)(message), context, status, }, this, handlingStack); } log(message, messageContext, status = isAuthorized_1.StatusType.info, error) { let handlingStack; if ((0, isAuthorized_1.isAuthorized)(status, exports.HandlerType.http, this)) { handlingStack = (0, browser_core_1.createHandlingStack)('log'); } this.logImplementation(message, messageContext, status, error, handlingStack); } setContext(context) { this.contextManager.setContext(context); } getContext() { return this.contextManager.getContext(); } setContextProperty(key, value) { this.contextManager.setContextProperty(key, value); } removeContextProperty(key) { this.contextManager.removeContextProperty(key); } clearContext() { this.contextManager.clearContext(); } addTag(key, value) { this.tags.push((0, browser_core_1.buildTag)(key, value)); } removeTagsWithKey(key) { const sanitizedKey = (0, browser_core_1.sanitizeTag)(key); this.tags = this.tags.filter((tag) => tag !== sanitizedKey && !tag.startsWith(`${sanitizedKey}:`)); } getTags() { return this.tags.slice(); } setHandler(handler) { this.handlerType = handler; } getHandler() { return this.handlerType; } setLevel(level) { this.level = level; } getLevel() { return this.level; } } exports.Logger = Logger; __decorate([ browser_core_1.monitored ], Logger.prototype, "logImplementation", null); /* eslint-disable local-rules/disallow-side-effects */ Logger.prototype.ok = createLoggerMethod(isAuthorized_1.StatusType.ok); Logger.prototype.debug = createLoggerMethod(isAuthorized_1.StatusType.debug); Logger.prototype.info = createLoggerMethod(isAuthorized_1.StatusType.info); Logger.prototype.notice = createLoggerMethod(isAuthorized_1.StatusType.notice); Logger.prototype.warn = createLoggerMethod(isAuthorized_1.StatusType.warn); Logger.prototype.error = createLoggerMethod(isAuthorized_1.StatusType.error); Logger.prototype.critical = createLoggerMethod(isAuthorized_1.StatusType.critical); Logger.prototype.alert = createLoggerMethod(isAuthorized_1.StatusType.alert); Logger.prototype.emerg = createLoggerMethod(isAuthorized_1.StatusType.emerg); function createLoggerMethod(status) { return function (message, messageContext, error) { let handlingStack; if ((0, isAuthorized_1.isAuthorized)(status, exports.HandlerType.http, this)) { handlingStack = (0, browser_core_1.createHandlingStack)('log'); } this.logImplementation(message, messageContext, status, error, handlingStack); }; } //# sourceMappingURL=logger.js.map