1616import io .opentelemetry .api .incubator .logs .ExtendedLogRecordBuilder ;
1717import io .opentelemetry .api .logs .LogRecordBuilder ;
1818import io .opentelemetry .api .logs .Logger ;
19+ import io .opentelemetry .api .logs .Severity ;
1920import io .opentelemetry .api .trace .Span ;
2021import io .opentelemetry .api .trace .SpanBuilder ;
2122import io .opentelemetry .api .trace .SpanKind ;
@@ -104,10 +105,6 @@ public static <REQUEST, RESPONSE> InstrumenterBuilder<REQUEST, RESPONSE> builder
104105 Instrumenter (InstrumenterBuilder <REQUEST , RESPONSE > builder ) {
105106 this .instrumentationName = builder .instrumentationName ;
106107 this .tracer = builder .buildTracer ();
107- this .logger =
108- emitExceptionAsLogs () && builder .exceptionEventExtractor != null
109- ? builder .buildLogger ()
110- : null ;
111108 this .spanNameExtractor = builder .spanNameExtractor ;
112109 this .spanKindExtractor = builder .spanKindExtractor ;
113110 this .spanStatusExtractor = builder .spanStatusExtractor ;
@@ -118,10 +115,20 @@ public static <REQUEST, RESPONSE> InstrumenterBuilder<REQUEST, RESPONSE> builder
118115 this .operationListenerAttributesExtractors =
119116 builder .operationListenerAttributesExtractors .toArray (new AttributesExtractor [0 ]);
120117 this .errorCauseExtractor = builder .errorCauseExtractor ;
121- this .exceptionEventExtractor = builder .exceptionEventExtractor ;
122118 this .propagateOperationListenersToOnEnd = builder .propagateOperationListenersToOnEnd ;
123119 this .enabled = builder .enabled ;
124120 this .spanSuppressor = builder .buildSpanSuppressor ();
121+
122+ if (emitExceptionAsLogs ()) {
123+ this .logger = builder .buildLogger ();
124+ this .exceptionEventExtractor =
125+ builder .exceptionEventExtractor != null
126+ ? builder .exceptionEventExtractor
127+ : defaultExceptionEventExtractor (builder .instrumentationName );
128+ } else {
129+ this .logger = null ;
130+ this .exceptionEventExtractor = builder .exceptionEventExtractor ;
131+ }
125132 }
126133
127134 /**
@@ -350,6 +357,15 @@ private void emitExceptionLog(Context context, Throwable throwable, REQUEST requ
350357 logRecordBuilder .emit ();
351358 }
352359
360+ private static <REQUEST > InternalExceptionEventExtractor <REQUEST > defaultExceptionEventExtractor (
361+ String instrumentationName ) {
362+ String eventName = instrumentationName + ".exception" ;
363+ return (logRecordBuilder , context , request ) -> {
364+ logRecordBuilder .setEventName (eventName );
365+ logRecordBuilder .setSeverity (Severity .WARN );
366+ };
367+ }
368+
353369 private static long getNanos (@ Nullable Instant time ) {
354370 if (time == null ) {
355371 return System .nanoTime ();
0 commit comments