Ctrl K
ComunidadGuías…

logger.ts

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { LoggerProvider, BatchLogRecordProcessor } from '@opentelemetry/sdk-logs';
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
import { resourceFromAttributes } from '@opentelemetry/resources';
import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';

const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
const serviceName = process.env.OTEL_SERVICE_NAME || 'dansday-discord-bot';
const FLUSH_INTERVAL_MS = 5000;

let loggerProvider: LoggerProvider | null = null;
if (endpoint?.trim()) {
	try {
		const resource = resourceFromAttributes({
			[ATTR_SERVICE_NAME]: serviceName
		});
		const logExporter = new OTLPLogExporter({});
		loggerProvider = new LoggerProvider({
			resource,
			processors: [new BatchLogRecordProcessor({ exporter: logExporter })]
		});
		const flushInterval = setInterval(() => loggerProvider?.forceFlush().catch(() => {}), FLUSH_INTERVAL_MS);
		if (flushInterval.unref) {
			flushInterval.unref();
		}
	} catch (_) {
		loggerProvider = null;
	}
}

export default loggerProvider;