From 9d3164621a8bb0e2bbf8d2309fba1d8678c0abe2 Mon Sep 17 00:00:00 2001 From: smhendrickson Date: Wed, 23 Jul 2025 17:48:24 -0400 Subject: add `--telemetry-outfile` flag (#4689) --- packages/core/src/telemetry/sdk.ts | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'packages/core/src/telemetry/sdk.ts') diff --git a/packages/core/src/telemetry/sdk.ts b/packages/core/src/telemetry/sdk.ts index 83294651..1167750a 100644 --- a/packages/core/src/telemetry/sdk.ts +++ b/packages/core/src/telemetry/sdk.ts @@ -29,6 +29,11 @@ import { Config } from '../config/config.js'; import { SERVICE_NAME } from './constants.js'; import { initializeMetrics } from './metrics.js'; import { ClearcutLogger } from './clearcut-logger/clearcut-logger.js'; +import { + FileLogExporter, + FileMetricExporter, + FileSpanExporter, +} from './file-exporters.js'; // For troubleshooting, set the log level to DiagLogLevel.DEBUG diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO); @@ -74,19 +79,24 @@ export function initializeTelemetry(config: Config): void { const otlpEndpoint = config.getTelemetryOtlpEndpoint(); const grpcParsedEndpoint = parseGrpcEndpoint(otlpEndpoint); const useOtlp = !!grpcParsedEndpoint; + const telemetryOutfile = config.getTelemetryOutfile(); const spanExporter = useOtlp ? new OTLPTraceExporter({ url: grpcParsedEndpoint, compression: CompressionAlgorithm.GZIP, }) - : new ConsoleSpanExporter(); + : telemetryOutfile + ? new FileSpanExporter(telemetryOutfile) + : new ConsoleSpanExporter(); const logExporter = useOtlp ? new OTLPLogExporter({ url: grpcParsedEndpoint, compression: CompressionAlgorithm.GZIP, }) - : new ConsoleLogRecordExporter(); + : telemetryOutfile + ? new FileLogExporter(telemetryOutfile) + : new ConsoleLogRecordExporter(); const metricReader = useOtlp ? new PeriodicExportingMetricReader({ exporter: new OTLPMetricExporter({ @@ -95,10 +105,15 @@ export function initializeTelemetry(config: Config): void { }), exportIntervalMillis: 10000, }) - : new PeriodicExportingMetricReader({ - exporter: new ConsoleMetricExporter(), - exportIntervalMillis: 10000, - }); + : telemetryOutfile + ? new PeriodicExportingMetricReader({ + exporter: new FileMetricExporter(telemetryOutfile), + exportIntervalMillis: 10000, + }) + : new PeriodicExportingMetricReader({ + exporter: new ConsoleMetricExporter(), + exportIntervalMillis: 10000, + }); sdk = new NodeSDK({ resource, -- cgit v1.2.3