88import static io .opentelemetry .sdk .internal .ScopeConfiguratorBuilder .nameEquals ;
99import static io .opentelemetry .sdk .internal .ScopeConfiguratorBuilder .nameMatchesGlob ;
1010import static io .opentelemetry .sdk .logs .internal .LoggerConfig .defaultConfig ;
11+ import static io .opentelemetry .sdk .logs .internal .LoggerConfig .disabled ;
1112import static io .opentelemetry .sdk .logs .internal .LoggerConfig .enabled ;
1213import static io .opentelemetry .sdk .testing .assertj .OpenTelemetryAssertions .assertThat ;
1314
@@ -37,7 +38,7 @@ void disableScopes() {
3738 SdkLoggerProvider .builder ()
3839 // Disable loggerB. Since loggers are enabled by default, loggerA and loggerC are
3940 // enabled.
40- .addLoggerConfiguratorCondition (nameEquals ("loggerB" ), LoggerConfig . disabled ())
41+ .addLoggerConfiguratorCondition (nameEquals ("loggerB" ), disabled ())
4142 .addLogRecordProcessor (SimpleLogRecordProcessor .create (exporter ))
4243 .build ();
4344
@@ -86,25 +87,23 @@ private static Stream<Arguments> loggerConfiguratorArgs() {
8687 LoggerConfig .configuratorBuilder ().build ();
8788 ScopeConfigurator <LoggerConfig > disableCat =
8889 LoggerConfig .configuratorBuilder ()
89- .addCondition (nameEquals ("cat" ), LoggerConfig . disabled ())
90+ .addCondition (nameEquals ("cat" ), disabled ())
9091 // Second matching rule for cat should be ignored
9192 .addCondition (nameEquals ("cat" ), enabled ())
9293 .build ();
9394 ScopeConfigurator <LoggerConfig > disableStartsWithD =
94- LoggerConfig .configuratorBuilder ()
95- .addCondition (nameMatchesGlob ("d*" ), LoggerConfig .disabled ())
96- .build ();
95+ LoggerConfig .configuratorBuilder ().addCondition (nameMatchesGlob ("d*" ), disabled ()).build ();
9796 ScopeConfigurator <LoggerConfig > enableCat =
9897 LoggerConfig .configuratorBuilder ()
99- .setDefault (LoggerConfig . disabled ())
98+ .setDefault (disabled ())
10099 .addCondition (nameEquals ("cat" ), enabled ())
101100 // Second matching rule for cat should be ignored
102- .addCondition (nameEquals ("cat" ), LoggerConfig . disabled ())
101+ .addCondition (nameEquals ("cat" ), disabled ())
103102 .build ();
104103 ScopeConfigurator <LoggerConfig > enableStartsWithD =
105104 LoggerConfig .configuratorBuilder ()
106- .setDefault (LoggerConfig . disabled ())
107- .addCondition (nameMatchesGlob ("d*" ), LoggerConfig . enabled ())
105+ .setDefault (disabled ())
106+ .addCondition (nameMatchesGlob ("d*" ), enabled ())
108107 .build ();
109108
110109 return Stream .of (
@@ -113,20 +112,83 @@ private static Stream<Arguments> loggerConfiguratorArgs() {
113112 Arguments .of (defaultConfigurator , scopeDog , defaultConfig ()),
114113 Arguments .of (defaultConfigurator , scopeDuck , defaultConfig ()),
115114 // default enabled, disable cat
116- Arguments .of (disableCat , scopeCat , LoggerConfig . disabled ()),
115+ Arguments .of (disableCat , scopeCat , disabled ()),
117116 Arguments .of (disableCat , scopeDog , enabled ()),
118117 Arguments .of (disableCat , scopeDuck , enabled ()),
119118 // default enabled, disable pattern
120119 Arguments .of (disableStartsWithD , scopeCat , enabled ()),
121- Arguments .of (disableStartsWithD , scopeDog , LoggerConfig . disabled ()),
122- Arguments .of (disableStartsWithD , scopeDuck , LoggerConfig . disabled ()),
120+ Arguments .of (disableStartsWithD , scopeDog , disabled ()),
121+ Arguments .of (disableStartsWithD , scopeDuck , disabled ()),
123122 // default disabled, enable cat
124123 Arguments .of (enableCat , scopeCat , enabled ()),
125- Arguments .of (enableCat , scopeDog , LoggerConfig . disabled ()),
126- Arguments .of (enableCat , scopeDuck , LoggerConfig . disabled ()),
124+ Arguments .of (enableCat , scopeDog , disabled ()),
125+ Arguments .of (enableCat , scopeDuck , disabled ()),
127126 // default disabled, enable pattern
128- Arguments .of (enableStartsWithD , scopeCat , LoggerConfig . disabled ()),
127+ Arguments .of (enableStartsWithD , scopeCat , disabled ()),
129128 Arguments .of (enableStartsWithD , scopeDog , enabled ()),
130129 Arguments .of (enableStartsWithD , scopeDuck , enabled ()));
131130 }
131+
132+ @ Test
133+ void setScopeConfigurator () {
134+ // 1. Initially, configure all loggers to be enabled except loggerB
135+ InMemoryLogRecordExporter exporter = InMemoryLogRecordExporter .create ();
136+ SdkLoggerProvider loggerProvider =
137+ SdkLoggerProvider .builder ()
138+ .addLoggerConfiguratorCondition (nameEquals ("loggerB" ), disabled ())
139+ .addLogRecordProcessor (SimpleLogRecordProcessor .create (exporter ))
140+ .build ();
141+
142+ ExtendedSdkLogger loggerA = (ExtendedSdkLogger ) loggerProvider .get ("loggerA" );
143+ ExtendedSdkLogger loggerB = (ExtendedSdkLogger ) loggerProvider .get ("loggerB" );
144+ ExtendedSdkLogger loggerC = (ExtendedSdkLogger ) loggerProvider .get ("loggerC" );
145+
146+ // verify isEnabled()
147+ assertThat (loggerA .isEnabled ()).isTrue ();
148+ assertThat (loggerB .isEnabled ()).isFalse ();
149+ assertThat (loggerC .isEnabled ()).isTrue ();
150+
151+ // verify logs are emitted as expected
152+ loggerA .logRecordBuilder ().setBody ("logA" ).emit ();
153+ loggerB .logRecordBuilder ().setBody ("logB" ).emit ();
154+ loggerC .logRecordBuilder ().setBody ("logC" ).emit ();
155+ assertThat (exporter .getFinishedLogRecordItems ())
156+ .satisfiesExactlyInAnyOrder (
157+ log -> assertThat (log ).hasBody ("logA" ), log -> assertThat (log ).hasBody ("logC" ));
158+ exporter .reset ();
159+
160+ // 2. Update config to disable all loggers
161+ loggerProvider .setLoggerConfigurator (
162+ ScopeConfigurator .<LoggerConfig >builder ().setDefault (disabled ()).build ());
163+
164+ // verify isEnabled()
165+ assertThat (loggerA .isEnabled ()).isFalse ();
166+ assertThat (loggerB .isEnabled ()).isFalse ();
167+ assertThat (loggerC .isEnabled ()).isFalse ();
168+
169+ // verify logs are emitted as expected
170+ loggerA .logRecordBuilder ().setBody ("logA" ).emit ();
171+ loggerB .logRecordBuilder ().setBody ("logB" ).emit ();
172+ loggerC .logRecordBuilder ().setBody ("logC" ).emit ();
173+ assertThat (exporter .getFinishedLogRecordItems ()).isEmpty ();
174+
175+ // 3. Update config to restore original
176+ loggerProvider .setLoggerConfigurator (
177+ ScopeConfigurator .<LoggerConfig >builder ()
178+ .addCondition (nameEquals ("loggerB" ), disabled ())
179+ .build ());
180+
181+ // verify isEnabled()
182+ assertThat (loggerA .isEnabled ()).isTrue ();
183+ assertThat (loggerB .isEnabled ()).isFalse ();
184+ assertThat (loggerC .isEnabled ()).isTrue ();
185+
186+ // verify logs are emitted as expected
187+ loggerA .logRecordBuilder ().setBody ("logA" ).emit ();
188+ loggerB .logRecordBuilder ().setBody ("logB" ).emit ();
189+ loggerC .logRecordBuilder ().setBody ("logC" ).emit ();
190+ assertThat (exporter .getFinishedLogRecordItems ())
191+ .satisfiesExactly (
192+ log -> assertThat (log ).hasBody ("logA" ), log -> assertThat (log ).hasBody ("logC" ));
193+ }
132194}
0 commit comments