@@ -47,7 +47,7 @@ function otelExporter(
4747 }
4848}
4949
50- function createExporter ( ) : SpanExporter {
50+ function createExporter ( ) : SpanExporter | undefined {
5151 const exporters : SpanExporter [ ] = [ ] ;
5252
5353 const level = env . OTEL_DEBUG === 'true' ? DiagLogLevel . DEBUG : DiagLogLevel . ERROR ;
@@ -62,7 +62,6 @@ function createExporter(): SpanExporter {
6262 headers [ 'Authorization' ] = `Bearer ${ env . OTEL_EXPORTER_OTLP_KEY } ` ;
6363 }
6464
65- console . log ( 'OTEL exporter is enabled' ) ;
6665 exporters . push (
6766 otelExporter ( env . OTEL_EXPORTER_OTLP_PROTOCOL || 'http/json' , {
6867 url : env . OTEL_EXPORTER_OTLP_ENDPOINT ,
@@ -72,7 +71,6 @@ function createExporter(): SpanExporter {
7271 }
7372
7473 if ( env . LANGFUSE_HOST && env . LANGFUSE_PUBLIC_KEY && env . LANGFUSE_SECRET_KEY ) {
75- console . log ( 'Langfuse exporter is enabled' ) ;
7674 exporters . push (
7775 new LangfuseExporter ( {
7876 baseUrl : env . LANGFUSE_HOST ,
@@ -83,51 +81,49 @@ function createExporter(): SpanExporter {
8381 ) ;
8482 }
8583
86- if ( exporters . length === 0 ) {
87- return new ConsoleSpanExporter ( ) ;
84+ if ( env . OTEL_DEBUG === 'true' ) {
85+ exporters . push ( new ConsoleSpanExporter ( ) ) ;
8886 }
89- if ( exporters . length === 1 ) {
90- return exporters [ 0 ] as SpanExporter ;
87+
88+ if ( exporters . length === 0 ) {
89+ return undefined ;
9190 }
9291
9392 return {
9493 export ( spans : ReadableSpan [ ] , resultCallback : ( result : ExportResult ) => void ) : void {
9594 for ( const exporter of exporters ) {
9695 exporter . export ( spans , resultCallback ) ;
9796 }
98- console . log ( 'Exported spans' , spans . length ) ;
9997 } ,
10098
101- shutdown ( ) : Promise < void > {
102- return Promise . all ( exporters . map ( ( exporter ) => exporter . shutdown ( ) ) ) . then ( ( ) => undefined ) ;
99+ async shutdown ( ) : Promise < void > {
100+ return await Promise . all ( exporters . map ( ( exporter ) => exporter . shutdown ( ) ) ) . then ( ( ) => undefined ) ;
103101 } ,
104102
105- forceFlush ( ) : Promise < void > {
106- return Promise . all ( exporters . map ( ( exporter ) => exporter . forceFlush ?.( ) ) ) . then ( ( ) => undefined ) ;
103+ async forceFlush ( ) : Promise < void > {
104+ return await Promise . all ( exporters . map ( ( exporter ) => exporter . forceFlush ?.( ) ) ) . then ( ( ) => undefined ) ;
107105 }
108106 } as SpanExporter ;
109107}
110108
111- console . log ( 'Initializing OTel SDK' ) ;
112- const exporter = createExporter ( ) ;
109+ const traceExporter = createExporter ( ) ;
113110const contextManager = new AsyncLocalStorageContextManager ( ) ;
114111contextManager . enable ( ) ;
115112
116113const sdk = new NodeSDK ( {
117114 contextManager,
118- traceExporter : exporter ,
119- spanProcessor : new BatchSpanProcessor ( exporter ) ,
115+ traceExporter,
116+ spanProcessor : traceExporter ? new BatchSpanProcessor ( traceExporter ) : undefined ,
120117 instrumentations : [ getNodeAutoInstrumentations ( ) ]
121118} ) ;
122119
123- console . log ( 'Starting OTel SDK' ) ;
124120sdk . start ( ) ;
125121
126122process . on ( 'SIGTERM' , ( ) => {
127123 sdk
128124 . shutdown ( )
129125 . then (
130- ( ) => console . log ( 'OTel shutdown complete' ) ,
126+ ( ) => { } ,
131127 ( error ) => console . error ( 'OTel shutdown error' , error )
132128 )
133129 . finally ( ( ) => process . exit ( 0 ) ) ;
0 commit comments