2020import static io .opentelemetry .exporter .otlp .internal .OtlpConfigUtil .DATA_TYPE_LOGS ;
2121
2222import com .google .common .annotations .VisibleForTesting ;
23+ import io .opentelemetry .api .incubator .config .ConfigProvider ;
2324import io .opentelemetry .api .incubator .config .DeclarativeConfigProperties ;
2425import io .opentelemetry .exporter .otlp .http .logs .OtlpHttpLogRecordExporter ;
2526import io .opentelemetry .exporter .otlp .http .logs .OtlpHttpLogRecordExporterBuilder ;
3031import io .opentelemetry .exporter .otlp .logs .OtlpGrpcLogRecordExporterBuilder ;
3132import io .opentelemetry .sdk .autoconfigure .spi .ConfigProperties ;
3233import io .opentelemetry .sdk .autoconfigure .spi .ConfigurationException ;
34+ import io .opentelemetry .sdk .autoconfigure .spi .internal .ExtendedDeclarativeConfigProperties ;
3335import io .opentelemetry .sdk .logs .export .LogRecordExporter ;
36+ import java .lang .reflect .InvocationTargetException ;
37+ import java .lang .reflect .Proxy ;
3438import java .util .Set ;
3539import java .util .function .Supplier ;
3640
@@ -48,15 +52,15 @@ static LogRecordExporter fromConfig(DeclarativeConfigProperties exporterConfigPr
4852 exporterConfigProperties .getStructured ("otlp_log_http" , empty ());
4953 OtlpHttpLogRecordExporterComponentProvider provider =
5054 new OtlpHttpLogRecordExporterComponentProvider ();
51- return provider .create (otlpHttp );
55+ return provider .create (toExtended ( otlpHttp ) );
5256 }
5357
5458 if (propertyKeys .contains ("otlp_log_grpc" )) {
5559 DeclarativeConfigProperties otlpGrpc =
5660 exporterConfigProperties .getStructured ("otlp_log_grpc" , empty ());
5761 OtlpGrpcLogRecordExporterComponentProvider provider =
5862 new OtlpGrpcLogRecordExporterComponentProvider ();
59- return provider .create (otlpGrpc );
63+ return provider .create (toExtended ( otlpGrpc ) );
6064 }
6165 }
6266
@@ -111,4 +115,25 @@ static LogRecordExporter buildHttpExporter(
111115
112116 return builder .addHeader (EXTRA_CONTENT_TYPE , STACKTRACES_HEADER_VALUE ).build ();
113117 }
118+
119+ public static ExtendedDeclarativeConfigProperties toExtended (
120+ DeclarativeConfigProperties properties ) {
121+ if (properties instanceof ExtendedDeclarativeConfigProperties ) {
122+ return (ExtendedDeclarativeConfigProperties ) properties ;
123+ }
124+ return (ExtendedDeclarativeConfigProperties )
125+ Proxy .newProxyInstance (
126+ LogExporterBuilder .class .getClassLoader (),
127+ new Class [] {ExtendedDeclarativeConfigProperties .class },
128+ (proxy , method , args ) -> {
129+ if ("getConfigProvider" .equals (method .getName ())) {
130+ return ConfigProvider .noop ();
131+ }
132+ try {
133+ return method .invoke (properties , args );
134+ } catch (InvocationTargetException exception ) {
135+ throw exception .getCause ();
136+ }
137+ });
138+ }
114139}
0 commit comments