UNPKG

@trifrost/core

Version:

Blazingly fast, runtime-agnostic server framework for modern edge and node environments

94 lines (93 loc) 3.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TriFrostRootLogger = void 0; const Lazy_1 = require("../../utils/Lazy"); const Logger_1 = require("./Logger"); const Generic_1 = require("../../utils/Generic"); const exporters_1 = require("./exporters"); class TriFrostRootLogger { #debug = false; #exporters; #spanAwareExporters = []; #logger; #runtime; constructor(cfg) { this.#exporters = new Lazy_1.Lazy(cfg.exporters); this.#runtime = { ...(typeof cfg.runtime.name === 'string' && { 'runtime.name': cfg.runtime.name }), ...(typeof cfg.runtime.version === 'string' && { 'runtime.version': cfg.runtime.version }), }; const rootExporter = new exporters_1.ConsoleExporter(); this.#logger = new Logger_1.Logger({ debug: false, exporters: [rootExporter], spanAwareExporters: [], }); rootExporter.init({ 'service.name': 'trifrost-root', 'service.version': '1.0.0', 'telemetry.sdk.name': 'trifrost', 'telemetry.sdk.language': 'javascript', ...this.#runtime, }); } debug(msg, data) { if (this.#debug) this.#logger.debug(msg, data); } info(msg, data) { this.#logger.info(msg, data); } log(msg, data) { this.#logger.log(msg, data); } warn(msg, data) { this.#logger.warn(msg, data); } error(msg, data) { this.#logger.error(msg, data); } spawn(ctx) { try { if (!this.#exporters.resolved) { this.#exporters.resolve(ctx); /* Determine debug */ this.#debug = (0, Generic_1.determineDebug)(ctx.env); /* Determine trifrost */ const attributes = { 'service.name': (0, Generic_1.determineName)(ctx.env), 'service.version': (0, Generic_1.determineVersion)(ctx.env), 'telemetry.sdk.name': 'trifrost', 'telemetry.sdk.language': 'javascript', ...this.#runtime, }; /* Set global logger debug state */ this.#logger.setDebug(this.#debug); /* Add a spanAware flag on exporters */ const exporters = this.#exporters.resolved; const spanAware = []; for (let i = 0; i < exporters.length; i++) { const exp = exporters[i]; /* Initialize exporter */ exp.init(attributes); /* If span aware, push exporter into span aware exporters */ if (typeof exp.pushSpan === 'function') spanAware.push(exp); } this.#spanAwareExporters = spanAware; } return new Logger_1.Logger({ debug: this.#debug, traceId: ctx.traceId, context: ctx.context, exporters: this.#exporters.resolved, spanAwareExporters: this.#spanAwareExporters, }); } catch (err) { console.error(err); return new Logger_1.Logger({ debug: false, exporters: [], spanAwareExporters: [] }); } } } exports.TriFrostRootLogger = TriFrostRootLogger;