UNPKG

container.ts

Version:
109 lines 4.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const assert = require("assert"); const container_1 = require("../../container"); const Process_1 = require("../process/Process"); const Log_1 = require("./Log"); // Rollbar does not have defined types. const ROLLBAR = require("rollbar"); // TODO: Validation library. exports.ENV_ROLLBAR_ACCESS_TOKEN = "ROLLBAR_ACCESS_TOKEN"; exports.ENV_ROLLBAR_REPORT_LEVEL = "ROLLBAR_REPORT_LEVEL"; class RollbarLog extends Log_1.Log { constructor(name, opts) { super(name, opts, { _process: Process_1.Process.name }); // Get Node environment value. const environment = this._process.nodeEnvironment; this.debug(`environment '${environment}'`); // Get access token from environment. const accessToken = this.environment.get(exports.ENV_ROLLBAR_ACCESS_TOKEN); assert(accessToken != null, "Rollbar access token is undefined"); // Get report level from environment or fall back on log level. const rawReportLevel = this.environment.get(exports.ENV_ROLLBAR_REPORT_LEVEL); const reportLevel = this.reportLevel(rawReportLevel); this.debug(`reportLevel '${reportLevel}'`); // Create Rollbar instance. // Report level determined by module log level. // Handle uncaught exceptions and unhandled rejections by default. // Uncaught errors have 'critical' level by default. this._rollbar = new ROLLBAR({ environment, accessToken, reportLevel, handleUncaughtExceptions: true, handleUnhandledRejections: true, uncaughtErrorLevel: "critical", }); } /** Rollbar handler for incoming log messages. */ handleLog(log) { const callback = this.handlerError.bind(this); // Map log level to rollbar log methods. switch (log.level) { case container_1.ELogLevel.Emergency: case container_1.ELogLevel.Alert: case container_1.ELogLevel.Critical: { this._rollbar.critical(log.message, log.metadata, ...log.args, callback); break; } case container_1.ELogLevel.Error: { this._rollbar.error(log.message, log.metadata, ...log.args, callback); break; } case container_1.ELogLevel.Warning: { this._rollbar.warning(log.message, log.metadata, ...log.args, callback); break; } case container_1.ELogLevel.Notice: case container_1.ELogLevel.Informational: { this._rollbar.info(log.message, log.metadata, ...log.args, callback); break; } case container_1.ELogLevel.Debug: { this._rollbar.debug(log.message, log.metadata, ...log.args, callback); break; } } } /** Rollbar error handler callback. */ handlerError(error) { if (error != null) { process.stderr.write(String(error)); } } /** Return rollbar report level. */ reportLevel(value) { let level; if (value != null) { level = this.parseLevel(value); } else { level = this.level; } switch (level) { case container_1.ELogLevel.Emergency: case container_1.ELogLevel.Alert: case container_1.ELogLevel.Critical: { return "critical"; } case container_1.ELogLevel.Error: { return "error"; } case container_1.ELogLevel.Warning: { return "warning"; } case container_1.ELogLevel.Notice: case container_1.ELogLevel.Informational: { return "info"; } case container_1.ELogLevel.Debug: { return "debug"; } default: { return "error"; } } } } exports.RollbarLog = RollbarLog; //# sourceMappingURL=RollbarLog.js.map