99import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .BatchLogRecordProcessorModel ;
1010import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .LogRecordExporterModel ;
1111import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .LogRecordProcessorModel ;
12- import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .LogRecordProcessorPropertyModel ;
1312import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .SimpleLogRecordProcessorModel ;
1413import io .opentelemetry .sdk .logs .LogRecordProcessor ;
1514import io .opentelemetry .sdk .logs .export .BatchLogRecordProcessor ;
1615import io .opentelemetry .sdk .logs .export .BatchLogRecordProcessorBuilder ;
1716import io .opentelemetry .sdk .logs .export .LogRecordExporter ;
1817import io .opentelemetry .sdk .logs .export .SimpleLogRecordProcessor ;
1918import java .time .Duration ;
20- import java .util .Map ;
2119
2220final class LogRecordProcessorFactory
2321 implements Factory <LogRecordProcessorModel , LogRecordProcessor > {
@@ -33,54 +31,61 @@ static LogRecordProcessorFactory getInstance() {
3331 @ Override
3432 public LogRecordProcessor create (
3533 LogRecordProcessorModel model , DeclarativeConfigContext context ) {
36- BatchLogRecordProcessorModel batchModel = model .getBatch ();
37- if (batchModel != null ) {
38- LogRecordExporterModel exporterModel =
39- FileConfigUtil .requireNonNull (
40- batchModel .getExporter (), "batch log record processor exporter" );
34+ // We don't use the variable till later but call validate first to confirm there are not
35+ // multiple samplers.
36+ ConfigKeyValue processorKeyValue =
37+ FileConfigUtil .validateSingleKeyValue (context , model , "log record processor" );
4138
42- LogRecordExporter logRecordExporter =
43- LogRecordExporterFactory .getInstance ().create (exporterModel , context );
44- BatchLogRecordProcessorBuilder builder = BatchLogRecordProcessor .builder (logRecordExporter );
45- if (batchModel .getExportTimeout () != null ) {
46- builder .setExporterTimeout (Duration .ofMillis (batchModel .getExportTimeout ()));
47- }
48- if (batchModel .getMaxExportBatchSize () != null ) {
49- builder .setMaxExportBatchSize (batchModel .getMaxExportBatchSize ());
50- }
51- if (batchModel .getMaxQueueSize () != null ) {
52- builder .setMaxQueueSize (batchModel .getMaxQueueSize ());
53- }
54- if (batchModel .getScheduleDelay () != null ) {
55- builder .setScheduleDelay (Duration .ofMillis (batchModel .getScheduleDelay ()));
56- }
57- MeterProvider meterProvider = context .getMeterProvider ();
58- if (meterProvider != null ) {
59- builder .setMeterProvider (meterProvider );
60- }
61-
62- return context .addCloseable (builder .build ());
39+ if (model .getBatch () != null ) {
40+ return createBatchLogRecordProcessor (model .getBatch (), context );
41+ }
42+ if (model .getSimple () != null ) {
43+ return createSimpleLogRecordProcessor (model .getSimple (), context );
6344 }
6445
65- SimpleLogRecordProcessorModel simpleModel = model .getSimple ();
66- if (simpleModel != null ) {
67- LogRecordExporterModel exporterModel =
68- FileConfigUtil .requireNonNull (
69- simpleModel .getExporter (), "simple log record processor exporter" );
70- LogRecordExporter logRecordExporter =
71- LogRecordExporterFactory .getInstance ().create (exporterModel , context );
72- MeterProvider meterProvider = context .getMeterProvider ();
73- return context .addCloseable (
74- SimpleLogRecordProcessor .builder (logRecordExporter )
75- .setMeterProvider (() -> meterProvider )
76- .build ());
46+ return context .loadComponent (LogRecordProcessor .class , processorKeyValue );
47+ }
48+
49+ private static LogRecordProcessor createBatchLogRecordProcessor (
50+ BatchLogRecordProcessorModel batchModel , DeclarativeConfigContext context ) {
51+ LogRecordExporterModel exporterModel =
52+ FileConfigUtil .requireNonNull (
53+ batchModel .getExporter (), "batch log record processor exporter" );
54+
55+ LogRecordExporter logRecordExporter =
56+ LogRecordExporterFactory .getInstance ().create (exporterModel , context );
57+ BatchLogRecordProcessorBuilder builder = BatchLogRecordProcessor .builder (logRecordExporter );
58+ if (batchModel .getExportTimeout () != null ) {
59+ builder .setExporterTimeout (Duration .ofMillis (batchModel .getExportTimeout ()));
60+ }
61+ if (batchModel .getMaxExportBatchSize () != null ) {
62+ builder .setMaxExportBatchSize (batchModel .getMaxExportBatchSize ());
7763 }
64+ if (batchModel .getMaxQueueSize () != null ) {
65+ builder .setMaxQueueSize (batchModel .getMaxQueueSize ());
66+ }
67+ if (batchModel .getScheduleDelay () != null ) {
68+ builder .setScheduleDelay (Duration .ofMillis (batchModel .getScheduleDelay ()));
69+ }
70+ MeterProvider meterProvider = context .getMeterProvider ();
71+ if (meterProvider != null ) {
72+ builder .setMeterProvider (meterProvider );
73+ }
74+
75+ return context .addCloseable (builder .build ());
76+ }
7877
79- Map .Entry <String , LogRecordProcessorPropertyModel > keyValue =
80- FileConfigUtil .getSingletonMapEntry (
81- model .getAdditionalProperties (), "log record processor" );
82- LogRecordProcessor logRecordProcessor =
83- context .loadComponent (LogRecordProcessor .class , keyValue .getKey (), keyValue .getValue ());
84- return context .addCloseable (logRecordProcessor );
78+ private static LogRecordProcessor createSimpleLogRecordProcessor (
79+ SimpleLogRecordProcessorModel simpleModel , DeclarativeConfigContext context ) {
80+ LogRecordExporterModel exporterModel =
81+ FileConfigUtil .requireNonNull (
82+ simpleModel .getExporter (), "simple log record processor exporter" );
83+ LogRecordExporter logRecordExporter =
84+ LogRecordExporterFactory .getInstance ().create (exporterModel , context );
85+ MeterProvider meterProvider = context .getMeterProvider ();
86+ return context .addCloseable (
87+ SimpleLogRecordProcessor .builder (logRecordExporter )
88+ .setMeterProvider (() -> meterProvider )
89+ .build ());
8590 }
8691}
0 commit comments