logger.ts
Rama master · réplica de lectura del repositorio original.
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;