TEZ-3918. Setting tez.task.log.level does not work
Signed-off-by: Jonathan Eagles <jeagles@apache.org>
diff --git a/tez-api/src/main/java/org/apache/tez/client/TezClientUtils.java b/tez-api/src/main/java/org/apache/tez/client/TezClientUtils.java
index 389b584..d0fc374 100644
--- a/tez-api/src/main/java/org/apache/tez/client/TezClientUtils.java
+++ b/tez-api/src/main/java/org/apache/tez/client/TezClientUtils.java
@@ -760,13 +760,6 @@
static void maybeAddDefaultLoggingJavaOpts(String logLevel, List<String> vargs) {
Objects.requireNonNull(vargs);
- if (!vargs.isEmpty()) {
- for (String arg : vargs) {
- if (arg.contains(TezConstants.TEZ_ROOT_LOGGER_NAME)) {
- return;
- }
- }
- }
TezClientUtils.addLog4jSystemProperties(logLevel, vargs);
}
@@ -829,8 +822,19 @@
+ TezConstants.TEZ_CONTAINER_LOG4J_PROPERTIES_FILE);
vargs.add("-D" + YarnConfiguration.YARN_APP_CONTAINER_LOG_DIR + "="
+ ApplicationConstants.LOG_DIR_EXPANSION_VAR);
- vargs.add("-D" + TezConstants.TEZ_ROOT_LOGGER_NAME + "=" + logLevel
- + "," + TezConstants.TEZ_CONTAINER_LOGGER_NAME);
+ boolean isRootLoggerPresent = false;
+ String rootLoggerArg = "-D" + TezConstants.TEZ_ROOT_LOGGER_NAME + "=" + logLevel
+ + "," + TezConstants.TEZ_CONTAINER_LOGGER_NAME;
+ for (int i = 0; i < vargs.size(); i++) {
+ String arg = vargs.get(i);
+ if (arg.contains(TezConstants.TEZ_ROOT_LOGGER_NAME)) {
+ vargs.set(i, rootLoggerArg);
+ isRootLoggerPresent = true;
+ }
+ }
+ if (!isRootLoggerPresent) {
+ vargs.add(rootLoggerArg);
+ }
}
static ConfigurationProto createFinalConfProtoForApp(Configuration amConf,
diff --git a/tez-api/src/test/java/org/apache/tez/client/TestTezClientUtils.java b/tez-api/src/test/java/org/apache/tez/client/TestTezClientUtils.java
index 29e9210..29a6769 100644
--- a/tez-api/src/test/java/org/apache/tez/client/TestTezClientUtils.java
+++ b/tez-api/src/test/java/org/apache/tez/client/TestTezClientUtils.java
@@ -682,6 +682,16 @@
javaOpts.contains("-Dlog4j.configuratorClass=org.apache.tez.common.TezLog4jConfigurator"));
}
+ @Test
+ public void testDefaultLoggingJavaOptsWithRootLogger() {
+ String origJavaOpts = "-D" + TezConstants.TEZ_ROOT_LOGGER_NAME + "=INFO";
+ String javaOpts = TezClientUtils.maybeAddDefaultLoggingJavaOpts("FOOBAR", origJavaOpts);
+ Assert.assertNotNull(javaOpts);
+ Assert.assertTrue(javaOpts.contains("-D" + TezConstants.TEZ_ROOT_LOGGER_NAME + "=FOOBAR"));
+ Assert.assertTrue(javaOpts.contains(TezConstants.TEZ_CONTAINER_LOG4J_PROPERTIES_FILE)
+ && javaOpts.contains("-Dlog4j.configuratorClass=org.apache.tez.common.TezLog4jConfigurator"));
+ }
+
@Test (timeout = 5000)
public void testConfSerializationForAm() {
Configuration conf =new Configuration(false);