8
8
import static io .opentelemetry .sdk .internal .ScopeConfiguratorBuilder .nameEquals ;
9
9
import static io .opentelemetry .sdk .internal .ScopeConfiguratorBuilder .nameMatchesGlob ;
10
10
import static io .opentelemetry .sdk .logs .internal .LoggerConfig .defaultConfig ;
11
+ import static io .opentelemetry .sdk .logs .internal .LoggerConfig .disabled ;
11
12
import static io .opentelemetry .sdk .logs .internal .LoggerConfig .enabled ;
12
13
import static io .opentelemetry .sdk .testing .assertj .OpenTelemetryAssertions .assertThat ;
13
14
@@ -37,7 +38,7 @@ void disableScopes() {
37
38
SdkLoggerProvider .builder ()
38
39
// Disable loggerB. Since loggers are enabled by default, loggerA and loggerC are
39
40
// enabled.
40
- .addLoggerConfiguratorCondition (nameEquals ("loggerB" ), LoggerConfig . disabled ())
41
+ .addLoggerConfiguratorCondition (nameEquals ("loggerB" ), disabled ())
41
42
.addLogRecordProcessor (SimpleLogRecordProcessor .create (exporter ))
42
43
.build ();
43
44
@@ -86,25 +87,23 @@ private static Stream<Arguments> loggerConfiguratorArgs() {
86
87
LoggerConfig .configuratorBuilder ().build ();
87
88
ScopeConfigurator <LoggerConfig > disableCat =
88
89
LoggerConfig .configuratorBuilder ()
89
- .addCondition (nameEquals ("cat" ), LoggerConfig . disabled ())
90
+ .addCondition (nameEquals ("cat" ), disabled ())
90
91
// Second matching rule for cat should be ignored
91
92
.addCondition (nameEquals ("cat" ), enabled ())
92
93
.build ();
93
94
ScopeConfigurator <LoggerConfig > disableStartsWithD =
94
- LoggerConfig .configuratorBuilder ()
95
- .addCondition (nameMatchesGlob ("d*" ), LoggerConfig .disabled ())
96
- .build ();
95
+ LoggerConfig .configuratorBuilder ().addCondition (nameMatchesGlob ("d*" ), disabled ()).build ();
97
96
ScopeConfigurator <LoggerConfig > enableCat =
98
97
LoggerConfig .configuratorBuilder ()
99
- .setDefault (LoggerConfig . disabled ())
98
+ .setDefault (disabled ())
100
99
.addCondition (nameEquals ("cat" ), enabled ())
101
100
// Second matching rule for cat should be ignored
102
- .addCondition (nameEquals ("cat" ), LoggerConfig . disabled ())
101
+ .addCondition (nameEquals ("cat" ), disabled ())
103
102
.build ();
104
103
ScopeConfigurator <LoggerConfig > enableStartsWithD =
105
104
LoggerConfig .configuratorBuilder ()
106
- .setDefault (LoggerConfig . disabled ())
107
- .addCondition (nameMatchesGlob ("d*" ), LoggerConfig . enabled ())
105
+ .setDefault (disabled ())
106
+ .addCondition (nameMatchesGlob ("d*" ), enabled ())
108
107
.build ();
109
108
110
109
return Stream .of (
@@ -113,20 +112,83 @@ private static Stream<Arguments> loggerConfiguratorArgs() {
113
112
Arguments .of (defaultConfigurator , scopeDog , defaultConfig ()),
114
113
Arguments .of (defaultConfigurator , scopeDuck , defaultConfig ()),
115
114
// default enabled, disable cat
116
- Arguments .of (disableCat , scopeCat , LoggerConfig . disabled ()),
115
+ Arguments .of (disableCat , scopeCat , disabled ()),
117
116
Arguments .of (disableCat , scopeDog , enabled ()),
118
117
Arguments .of (disableCat , scopeDuck , enabled ()),
119
118
// default enabled, disable pattern
120
119
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 ()),
123
122
// default disabled, enable cat
124
123
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 ()),
127
126
// default disabled, enable pattern
128
- Arguments .of (enableStartsWithD , scopeCat , LoggerConfig . disabled ()),
127
+ Arguments .of (enableStartsWithD , scopeCat , disabled ()),
129
128
Arguments .of (enableStartsWithD , scopeDog , enabled ()),
130
129
Arguments .of (enableStartsWithD , scopeDuck , enabled ()));
131
130
}
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
+ }
132
194
}
0 commit comments