Skip to content

Commit caba399

Browse files
authored
[Dataflow Java] Fix incorrect warning log when specifying logger override. (#39034)
1 parent 974ad17 commit caba399

2 files changed

Lines changed: 47 additions & 9 deletions

File tree

runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/logging/DataflowWorkerLoggingInitializer.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -217,17 +217,16 @@ private static void applyOverridesToLogger(
217217
boolean directLoggingEnabled) {
218218
if (!directLoggingEnabled) {
219219
logger.setLevel(overrides.disk);
220-
if (overrides.disk.intValue() != Level.OFF.intValue()) {
220+
if (overrides.direct.intValue() != Level.OFF.intValue()) {
221221
LOG.warn(
222-
"Ignoring the disk logging level override for {} because --defaultWorkerDirectLoggerLevel was OFF.",
222+
"Ignoring the direct logging level override for {} because --defaultWorkerDirectLoggerLevel was OFF.",
223223
logger.getName());
224224
}
225225
return;
226226
}
227227

228228
// Configure the logger to accept logs of the lower value. The log will be sent directly based
229-
// upon the default
230-
// nonDirectLogLevel or the provided hint.
229+
// upon the default nonDirectLogLevel or the provided hint.
231230
if (overrides.direct.intValue() < overrides.disk.intValue()) {
232231
logger.setLevel(overrides.direct);
233232
if (overrides.disk.intValue() != defaultNonDirectLogLevel.intValue()) {
@@ -245,9 +244,8 @@ private static void applyOverridesToLogger(
245244
logger.setLevel(overrides.disk);
246245
if (overrides.disk.intValue() < defaultNonDirectLogLevel.intValue()) {
247246
// We need to provide the hint as otherwise the default would be used and send the log
248-
// directly which is not
249-
// desired. We don't bother if the threshold was increased as the right decision would still
250-
// be made.
247+
// directly which is not desired. We don't bother if the threshold was increased as the
248+
// right decision would still be made.
251249
logger.setResourceBundle(
252250
DataflowWorkerLoggingHandler.resourceBundleForNonDirectLogLevelHint(overrides.disk));
253251
}

runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/logging/DataflowWorkerLoggingInitializerTest.java

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public void testWithSdkHarnessConfigurationOverride() {
134134
}
135135

136136
@Test
137-
public void testWithWorkerCustomLogLevels() {
137+
public void testWithWorkerCustomLogLevels() throws IOException {
138138
DataflowWorkerLoggingOptions options =
139139
PipelineOptionsFactory.as(DataflowWorkerLoggingOptions.class);
140140
options.setWorkerLogLevelOverrides(
@@ -153,6 +153,9 @@ public void testWithWorkerCustomLogLevels() {
153153
assertEquals(Level.SEVERE, bLogger.getLevel());
154154
assertEquals(0, bLogger.getHandlers().length);
155155
assertTrue(aLogger.getUseParentHandlers());
156+
157+
List<String> logLines = retrieveLogLines();
158+
assertThat(logLines, not(hasItem(containsString("Ignoring the direct logging level"))));
156159
}
157160

158161
@Test
@@ -176,7 +179,7 @@ public void testWithDirectLogging() {
176179
}
177180

178181
@Test
179-
public void testWithSdkHarnessCustomLogLevels() {
182+
public void testWithSdkHarnessCustomLogLevels() throws IOException {
180183
SdkHarnessOptions options = PipelineOptionsFactory.as(SdkHarnessOptions.class);
181184
options.setSdkHarnessLogLevelOverrides(
182185
new SdkHarnessLogLevelOverrides()
@@ -194,6 +197,43 @@ public void testWithSdkHarnessCustomLogLevels() {
194197
assertEquals(Level.SEVERE, bLogger.getLevel());
195198
assertEquals(0, bLogger.getHandlers().length);
196199
assertTrue(aLogger.getUseParentHandlers());
200+
201+
List<String> logLines = retrieveLogLines();
202+
assertThat(logLines, not(hasItem(containsString("Ignoring the direct logging level"))));
203+
}
204+
205+
@Test
206+
public void testWithSdkHarnessCustomLogLevels_DirectSpecifiedNotEnabled() throws IOException {
207+
SdkHarnessOptions options = PipelineOptionsFactory.as(SdkHarnessOptions.class);
208+
options.setSdkHarnessLogLevelOverrides(
209+
new SdkHarnessLogLevelOverrides()
210+
.addOverrideForName("B", SdkHarnessOptions.LogLevel.DEBUG)
211+
.addOverrideForName("C", SdkHarnessOptions.LogLevel.ERROR));
212+
DataflowWorkerLoggingOptions loggingOptions = options.as(DataflowWorkerLoggingOptions.class);
213+
loggingOptions.setWorkerDirectLogLevelOverrides(
214+
new WorkerLogLevelOverrides()
215+
.addOverrideForName("A", DataflowWorkerLoggingOptions.Level.TRACE)
216+
.addOverrideForName("C", DataflowWorkerLoggingOptions.Level.TRACE));
217+
218+
DataflowWorkerLoggingInitializer.configure(options.as(DataflowWorkerLoggingOptions.class));
219+
220+
Logger aLogger = LogManager.getLogManager().getLogger("A");
221+
assertEquals(0, aLogger.getHandlers().length);
222+
assertEquals(Level.INFO, aLogger.getLevel());
223+
assertTrue(aLogger.getUseParentHandlers());
224+
225+
Logger bLogger = LogManager.getLogManager().getLogger("B");
226+
assertEquals(Level.FINE, bLogger.getLevel());
227+
assertEquals(0, bLogger.getHandlers().length);
228+
assertTrue(aLogger.getUseParentHandlers());
229+
230+
Logger cLogger = LogManager.getLogManager().getLogger("C");
231+
assertEquals(Level.SEVERE, cLogger.getLevel());
232+
assertEquals(0, cLogger.getHandlers().length);
233+
assertTrue(aLogger.getUseParentHandlers());
234+
235+
List<String> logLines = retrieveLogLines();
236+
assertThat(logLines, hasItem(containsString("Ignoring the direct logging level")));
197237
}
198238

199239
@Test

0 commit comments

Comments
 (0)