Introduces jre.logging flags to replace gwt.logging.*

This is not just rename. I did some improvement and also
forwarded the old flag for compatibility.

Change-Id: I8cfc4bcbd70504c37248f0aac804925254d281b4
Review-Link: https://gwt-review.googlesource.com/#/c/15360/
diff --git a/user/src/com/google/gwt/core/Core.gwt.xml b/user/src/com/google/gwt/core/Core.gwt.xml
index 8eea25e..3d4ffbf 100644
--- a/user/src/com/google/gwt/core/Core.gwt.xml
+++ b/user/src/com/google/gwt/core/Core.gwt.xml
@@ -67,22 +67,20 @@
   <add-linker name="soycReport" />
   <add-linker name="symbolMaps" />
 
-  <!-- Set up and handle the gwt.logging property
-   Setting this value to FALSE will compile out all logging.  Setting it to SEVERE
-   or WARNING means that the logging framework will not compile out, but the basic
-   logging calls like logger.info() and logger.fine() will compile out if it is below
-   the level that is set.  Note that something like logger.log(Level.INFO, "foo", e)
-   *will not* compile out at this point.  If you have something that is important to
-   have compiled out, you should put it behind a
-   LogConfiguration.isLoggingEnabled(Level.INFO) guard.
+  <!--
+   Setting this value to OFF will compile out all logging.  Setting it to SEVERE, WARNING
+   or INFO means that the logging framework will not compile out, but the basic logging
+   calls like logger.fine() will compile out if it is below the level that is set.
+   Note that something like logger.log(Level.INFO, "foo") *will not* compile out.
    -->
-  <define-property name="gwt.logging.enabled" values="TRUE, FALSE, SEVERE, WARNING" />
-  <set-property name="gwt.logging.enabled" value="FALSE"/>
+  <define-property name="jre.logging.logLevel" values="OFF, SEVERE, WARNING, INFO, ALL" />
+  <set-property name="jre.logging.logLevel" value="OFF"/>
 
-  <define-property name="gwt.logging.simpleConsoleHandler" values="ENABLED, DISABLED" />
-  <set-property name="gwt.logging.simpleConsoleHandler" value="ENABLED"/>
-
-  <set-property name="gwt.logging.enabled" value="TRUE">
+  <set-property name="jre.logging.logLevel" value="ALL">
     <when-property-is name="jre.debugMode" value="ENABLED"/>
   </set-property>
+
+  <define-property name="jre.logging.simpleConsoleHandler" values="ENABLED, DISABLED" />
+  <set-property name="jre.logging.simpleConsoleHandler" value="ENABLED"/>
+
 </module>
diff --git a/user/src/com/google/gwt/logging/LogImpl.gwt.xml b/user/src/com/google/gwt/logging/LogImpl.gwt.xml
index b28f903..60ca775 100644
--- a/user/src/com/google/gwt/logging/LogImpl.gwt.xml
+++ b/user/src/com/google/gwt/logging/LogImpl.gwt.xml
@@ -1,4 +1,34 @@
 <module>
   <inherits name="com.google.gwt.core.Core"/>
   <source path="impl" />
+
+  <define-property name="gwt.logging.enabled" values="TRUE, FALSE, SEVERE, WARNING" />
+  <set-property name="gwt.logging.enabled" value="FALSE"/>
+  <set-property name="gwt.logging.enabled" value="TRUE">
+    <when-property-is name="jre.debugMode" value="ENABLED"/>
+  </set-property>
+
+  <!-- Forward gwt.logging.enabled to jre.logging.logLevel -->
+  <set-property name="jre.logging.logLevel" value="ALL">
+    <when-property-is name="gwt.logging.enabled" value="TRUE"/>
+  </set-property>
+  <set-property name="jre.logging.logLevel" value="SEVERE">
+    <when-property-is name="gwt.logging.enabled" value="SEVERE"/>
+  </set-property>
+  <set-property name="jre.logging.logLevel" value="WARNING">
+    <when-property-is name="gwt.logging.enabled" value="WARNING"/>
+  </set-property>
+  <set-property name="jre.logging.logLevel" value="OFF">
+    <when-property-is name="gwt.logging.enabled" value="FALSE"/>
+  </set-property>
+
+
+  <define-property name="gwt.logging.simpleConsoleHandler" values="ENABLED, DISABLED" />
+  <set-property name="gwt.logging.simpleConsoleHandler" value="ENABLED"/>
+
+  <!-- Forward gwt.logging.simpleConsoleHandler to jre.logging.simpleConsoleHandler -->
+  <set-property name="jre.logging.simpleConsoleHandler" value="DISABLED">
+    <when-property-is name="gwt.logging.simpleConsoleHandler" value="DISABLED"/>
+  </set-property>
+
 </module>
diff --git a/user/super/com/google/gwt/emul/java/util/logging/Level.java b/user/super/com/google/gwt/emul/java/util/logging/Level.java
index 72c5305..d549f69 100644
--- a/user/super/com/google/gwt/emul/java/util/logging/Level.java
+++ b/user/super/com/google/gwt/emul/java/util/logging/Level.java
@@ -83,8 +83,7 @@
 
   public static Level parse(String name) {
     Logger.assertLoggingValues();
-    boolean loggingDisabled = System.getProperty("gwt.logging.enabled", "FALSE").equals("FALSE");
-    if (loggingDisabled) {
+    if (System.getProperty("jre.logging.logLevel").equals("OFF")) {
       return null;
     }
 
diff --git a/user/super/com/google/gwt/emul/java/util/logging/LogManager.java b/user/super/com/google/gwt/emul/java/util/logging/LogManager.java
index e5c3b68..cac90af 100644
--- a/user/super/com/google/gwt/emul/java/util/logging/LogManager.java
+++ b/user/super/com/google/gwt/emul/java/util/logging/LogManager.java
@@ -75,7 +75,7 @@
   }
 
   private void addLoggerImpl(Logger logger) {
-    if (System.getProperty("gwt.logging.simpleConsoleHandler", "ENABLED").equals("ENABLED")) {
+    if (System.getProperty("jre.logging.simpleConsoleHandler").equals("ENABLED")) {
       if (logger.getName().isEmpty()) {
         logger.addHandler(new SimpleConsoleLogHandler());
       }
diff --git a/user/super/com/google/gwt/emul/java/util/logging/Logger.java b/user/super/com/google/gwt/emul/java/util/logging/Logger.java
index 305508c..2c0e0b0 100644
--- a/user/super/com/google/gwt/emul/java/util/logging/Logger.java
+++ b/user/super/com/google/gwt/emul/java/util/logging/Logger.java
@@ -27,10 +27,11 @@
 public class Logger {
   public static final String GLOBAL_LOGGER_NAME = "global";
 
-  private static final String LOGGING_ENABLED = System.getProperty("gwt.logging.enabled", "TRUE");
-  private static final boolean LOGGING_WARNING = LOGGING_ENABLED.equals("WARNING");
-  private static final boolean LOGGING_SEVERE = LOGGING_ENABLED.equals("SEVERE");
-  private static final boolean LOGGING_FALSE = LOGGING_ENABLED.equals("FALSE");
+  private static final String LOG_LEVEL = System.getProperty("jre.logging.logLevel");
+  private static final boolean LOGGING_INFO = LOG_LEVEL.equals("INFO");
+  private static final boolean LOGGING_WARNING = LOG_LEVEL.equals("WARNING");
+  private static final boolean LOGGING_SEVERE = LOG_LEVEL.equals("SEVERE");
+  private static final boolean LOGGING_OFF = LOG_LEVEL.equals("OFF");
 
   static {
     assertLoggingValues();
@@ -42,20 +43,25 @@
 
   public static Logger getLogger(String name) {
     // Use shortcut if logging is disabled to avoid parent logger creations in LogManager
-    if (LOGGING_FALSE) {
+    if (LOGGING_OFF) {
       return new Logger(name, null);
     }
     return LogManager.getLogManager().ensureLogger(name);
   }
 
   static void assertLoggingValues() {
-    if (LOGGING_ENABLED.equals("FALSE") || LOGGING_ENABLED.equals("TRUE")
-        || LOGGING_ENABLED.equals("SEVERE") || LOGGING_ENABLED.equals("WARNING")) {
+    if (LOG_LEVEL.equals("ALL")
+        || LOG_LEVEL.equals("INFO")
+        || LOG_LEVEL.equals("WARNING")
+        || LOG_LEVEL.equals("SEVERE")
+        || LOG_LEVEL.equals("OFF")) {
       return;
     }
 
-    throw new RuntimeException("Undefined value for gwt.logging.enabled: '" + LOGGING_ENABLED
-        + "'. Allowed values are TRUE, FALSE, SEVERE, WARNING");
+    throw new AssertionError(
+        "Undefined value for jre.logging.logLevel: '"
+            + LOG_LEVEL
+            + "'. Allowed values are ALL, INFO, WARNING, SEVERE, OFF");
   }
 
   private List<Handler> handlers;
@@ -65,7 +71,7 @@
   private boolean useParentHandlers;
 
   protected Logger(String name, @SuppressWarnings("unused") String resourceName) {
-    if (LOGGING_FALSE) {
+    if (LOGGING_OFF) {
       return;
     }
 
@@ -75,112 +81,112 @@
   }
 
   public void addHandler(Handler handler) {
-    if (LOGGING_FALSE) {
+    if (LOGGING_OFF) {
       return;
     }
     handlers.add(handler);
   }
 
   public void config(String msg) {
-    if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+    if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
       return;
     }
     log(Level.CONFIG, msg);
   }
 
   public void config(Supplier<String> msgSupplier) {
-    if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+    if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
       return;
     }
     log(Level.CONFIG, msgSupplier);
   }
 
   public void fine(String msg) {
-    if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+    if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
       return;
     }
     log(Level.FINE, msg);
   }
 
   public void fine(Supplier<String> msgSupplier) {
-    if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+    if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
       return;
     }
     log(Level.FINE, msgSupplier);
   }
 
   public void finer(String msg) {
-    if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+    if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
       return;
     }
     log(Level.FINER, msg);
   }
 
   public void finer(Supplier<String> msgSupplier) {
-    if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+    if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
       return;
     }
     log(Level.FINER, msgSupplier);
   }
 
   public void finest(String msg) {
-    if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+    if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
       return;
     }
     log(Level.FINEST, msg);
   }
 
   public void finest(Supplier<String> msgSupplier) {
-    if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+    if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
       return;
     }
     log(Level.FINEST, msgSupplier);
   }
 
   public void info(String msg) {
-    if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+    if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING) {
       return;
     }
     log(Level.INFO, msg);
   }
 
   public void info(Supplier<String> msgSupplier) {
-    if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+    if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING) {
       return;
     }
     log(Level.INFO, msgSupplier);
   }
 
   public void warning(String msg) {
-    if (LOGGING_FALSE || LOGGING_SEVERE) {
+    if (LOGGING_OFF || LOGGING_SEVERE) {
       return;
     }
     log(Level.WARNING, msg);
   }
 
   public void warning(Supplier<String> msgSupplier) {
-    if (LOGGING_FALSE || LOGGING_SEVERE) {
+    if (LOGGING_OFF || LOGGING_SEVERE) {
       return;
     }
     log(Level.WARNING, msgSupplier);
   }
 
   public void severe(String msg) {
-    if (LOGGING_FALSE) {
+    if (LOGGING_OFF) {
       return;
     }
     log(Level.SEVERE, msg);
   }
 
   public void severe(Supplier<String> msgSupplier) {
-    if (LOGGING_FALSE) {
+    if (LOGGING_OFF) {
       return;
     }
     log(Level.SEVERE, msgSupplier);
   }
 
   public Handler[] getHandlers() {
-    if (LOGGING_FALSE) {
+    if (LOGGING_OFF) {
       return new Handler[0];
     }
 
@@ -188,28 +194,30 @@
   }
 
   public Level getLevel() {
-    return LOGGING_FALSE ? null : level;
+    return LOGGING_OFF ? null : level;
   }
 
   public String getName() {
-    return LOGGING_FALSE ? null : name;
+    return LOGGING_OFF ? null : name;
   }
 
   public Logger getParent() {
-    return LOGGING_FALSE ? null : parent;
+    return LOGGING_OFF ? null : parent;
   }
 
   public boolean getUseParentHandlers() {
-    return LOGGING_FALSE ? false : useParentHandlers;
+    return LOGGING_OFF ? false : useParentHandlers;
   }
 
   public boolean isLoggable(Level messageLevel) {
-    if (LOGGING_FALSE) {
+    if (LOGGING_OFF) {
       return false;
     } else if (LOGGING_SEVERE) {
       return messageLevel.intValue() >= Level.SEVERE.intValue();
     } else if (LOGGING_WARNING) {
       return messageLevel.intValue() >= Level.WARNING.intValue();
+    } else if (LOGGING_INFO) {
+      return messageLevel.intValue() >= Level.INFO.intValue();
     } else {
       return messageLevel.intValue() >= getEffectiveLevel().intValue();
     }
@@ -242,21 +250,21 @@
   }
 
   public void removeHandler(Handler handler) {
-    if (LOGGING_FALSE) {
+    if (LOGGING_OFF) {
       return;
     }
     handlers.remove(handler);
   }
 
   public void setLevel(Level newLevel) {
-    if (LOGGING_FALSE) {
+    if (LOGGING_OFF) {
       return;
     }
     this.level = newLevel;
   }
 
   public void setParent(Logger newParent) {
-    if (LOGGING_FALSE) {
+    if (LOGGING_OFF) {
       return;
     }
     if (newParent != null) {
@@ -265,7 +273,7 @@
   }
 
   public void setUseParentHandlers(boolean newUseParentHandlers) {
-    if (LOGGING_FALSE) {
+    if (LOGGING_OFF) {
       return;
     }
     this.useParentHandlers = newUseParentHandlers;