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);
