@trifrost/core
Version:
Blazingly fast, runtime-agnostic server framework for modern edge and node environments
94 lines (93 loc) • 3.44 kB
JavaScript
"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;