Use LogLevel directly instead of the string representation

Bug: 5052143
Change-Id: I01ab0cd8beeb2a402bd4b0901aeed24b916f26c9
diff --git a/src/com/android/tradefed/command/Console.java b/src/com/android/tradefed/command/Console.java
index 397df86..a180b17 100644
--- a/src/com/android/tradefed/command/Console.java
+++ b/src/com/android/tradefed/command/Console.java
@@ -525,22 +525,23 @@
             @Override
             public void run(CaptureList args) {
                 // Skip 2 tokens to get past "set" and "log-level-display"
-                String logLevel = args.get(2).get(0);
-                String currentLogLevel = LogRegistry.getLogRegistry().getGlobalLogDisplayLevel();
-                if (LogLevel.getByString(logLevel) != null) {
-                    LogRegistry.getLogRegistry().setGlobalLogDisplayLevel(logLevel);
+                String logLevelStr = args.get(2).get(0);
+                LogLevel newLogLevel = LogLevel.getByString(logLevelStr);
+                LogLevel currentLogLevel = LogRegistry.getLogRegistry().getGlobalLogDisplayLevel();
+                if (newLogLevel != null) {
+                    LogRegistry.getLogRegistry().setGlobalLogDisplayLevel(newLogLevel);
                     // Make sure that the level was set.
                     currentLogLevel = LogRegistry.getLogRegistry().getGlobalLogDisplayLevel();
                     if (currentLogLevel != null) {
-                        printLine(String.format("Current logging set to '%s'.", currentLogLevel));
+                        printLine(String.format("Log level now set to '%s'.", currentLogLevel));
                     }
                 } else {
                     if (currentLogLevel == null) {
-                        printLine(String.format("Invalid log level '%s'.", logLevel));
+                        printLine(String.format("Invalid log level '%s'.", newLogLevel));
                     } else{
                         printLine(String.format(
                                 "Invalid log level '%s'; log level remains at '%s'.",
-                                logLevel, currentLogLevel));
+                                newLogLevel, currentLogLevel));
                     }
                 }
             }
diff --git a/src/com/android/tradefed/log/FileLogger.java b/src/com/android/tradefed/log/FileLogger.java
index 50b9303..2a9f151 100644
--- a/src/com/android/tradefed/log/FileLogger.java
+++ b/src/com/android/tradefed/log/FileLogger.java
@@ -45,14 +45,13 @@
     private File mTempLogFile = null;
     private BufferedWriter mLogWriter = null;
 
-    @Option(name = "log-level", description = "the minimum log level to log. Must be one of "
-            + LogUtil.LOG_LEVEL_LIST + ".")
-    private String mLogLevel = LogLevel.DEBUG.getStringValue();
+    @Option(name = "log-level", description = "the minimum log level to log.")
+    private LogLevel mLogLevel = LogLevel.DEBUG;
 
-    @Option(name = "log-level-display", shortName = 'l', description =
-        "the minimum log level to display on stdout. Must be one of " + LogUtil.LOG_LEVEL_LIST +
-        ".", importance = Importance.ALWAYS)
-    private String mLogLevelStringDisplay = LogLevel.ERROR.getStringValue();
+    @Option(name = "log-level-display", shortName = 'l',
+            description = "the minimum log level to display on stdout.",
+            importance = Importance.ALWAYS)
+    private LogLevel mLogLevelDisplay = LogLevel.ERROR;
 
     @Option(name = "log-tag-display", description = "Always display given tags logs on stdout")
     private Collection<String> mLogTagsDisplay = new HashSet<String>();
@@ -61,24 +60,6 @@
     private StackTraceElement[] mCloseStackFrames = null;
 
     /**
-     * Sets the log level filtering for stdout.
-     *
-     * @param logLevel the {@link LogLevel#getStringValue()} log level to display
-     */
-    void setLogLevelDisplay(String logLevel) {
-        mLogLevelStringDisplay = logLevel;
-    }
-
-    /**
-     * Gets the log level filtering for stdout.
-     *
-     * @return the {@link String} form of the {@link LogLevel}
-     */
-    String getLogLevelDisplay() {
-        return mLogLevelStringDisplay;
-    }
-
-    /**
      * Adds tags to the log-tag-display list
      *
      * @param tags collection of tags to add
@@ -116,7 +97,7 @@
     @Override
     public ILeveledLogOutput clone()  {
         FileLogger logger = new FileLogger();
-        logger.setLogLevelDisplay(mLogLevelStringDisplay);
+        logger.setLogLevelDisplay(mLogLevelDisplay);
         logger.setLogLevel(mLogLevel);
         logger.addLogTagsDisplay(mLogTagsDisplay);
         return logger;
@@ -145,9 +126,8 @@
     private void internalPrintLog(LogLevel logLevel, String tag, String message,
             boolean forceStdout) {
         String outMessage = LogUtil.getLogFormatString(logLevel, tag, message);
-        LogLevel displayLevel = LogLevel.getByString(mLogLevelStringDisplay);
         if (forceStdout
-                || logLevel.getPriority() >= displayLevel.getPriority()
+                || logLevel.getPriority() >= mLogLevelDisplay.getPriority()
                 || mLogTagsDisplay.contains(tag)) {
             System.out.print(outMessage);
         }
@@ -176,7 +156,7 @@
      * {@inheritDoc}
      */
     @Override
-    public String getLogLevel() {
+    public LogLevel getLogLevel() {
         return mLogLevel;
     }
 
@@ -184,11 +164,29 @@
      * {@inheritDoc}
      */
     @Override
-    public void setLogLevel(String logLevel) {
+    public void setLogLevel(LogLevel logLevel) {
         mLogLevel = logLevel;
     }
 
     /**
+     * Sets the log level filtering for stdout.
+     *
+     * @param logLevel the minimum {@link LogLevel} to display
+     */
+    void setLogLevelDisplay(LogLevel logLevel) {
+        mLogLevelDisplay = logLevel;
+    }
+
+    /**
+     * Gets the log level filtering for stdout.
+     *
+     * @return the current {@link LogLevel}
+     */
+    LogLevel getLogLevelDisplay() {
+        return mLogLevelDisplay;
+    }
+
+    /**
      * Returns the path representation of the file being logged to by this file logger
      */
     String getFilename() throws SecurityException {
diff --git a/src/com/android/tradefed/log/ILeveledLogOutput.java b/src/com/android/tradefed/log/ILeveledLogOutput.java
index c91db34..bed4c4d 100644
--- a/src/com/android/tradefed/log/ILeveledLogOutput.java
+++ b/src/com/android/tradefed/log/ILeveledLogOutput.java
@@ -36,16 +36,16 @@
     /**
      * Gets the minimum log level to display.
      *
-     * @return the {@link String} form of the {@link LogLevel}
+     * @return the current {@link LogLevel}
      */
-    public String getLogLevel();
+    public LogLevel getLogLevel();
 
     /**
      * Sets the minimum log level to display.
      *
-     * @param logLevel to display; must be recognized by {@link LogLevel#getStringValue()}
+     * @param logLevel the {@link LogLevel} to display
      */
-    public void setLogLevel(String logLevel);
+    public void setLogLevel(LogLevel logLevel);
 
     /**
      * Grabs a snapshot stream of the log data.
diff --git a/src/com/android/tradefed/log/ILogRegistry.java b/src/com/android/tradefed/log/ILogRegistry.java
index d918609..7249734 100644
--- a/src/com/android/tradefed/log/ILogRegistry.java
+++ b/src/com/android/tradefed/log/ILogRegistry.java
@@ -30,9 +30,9 @@
     /**
      * Set the log level display for the global log
      *
-     * @param logLevel the {@link String} form of the {@link LogLevel} to use
+     * @param logLevel the {@link LogLevel} to use
      */
-    public void setGlobalLogDisplayLevel(String logLevel);
+    public void setGlobalLogDisplayLevel(LogLevel logLevel);
 
     /**
      * Set the log tags to display for the global log
@@ -42,9 +42,9 @@
     /**
      * Returns current log level display for the global log
      *
-     * @return logLevel the {@link String} form of the {@link LogLevel} to use
+     * @return logLevel the {@link LogLevel} to use
      */
-    public String getGlobalLogDisplayLevel();
+    public LogLevel getGlobalLogDisplayLevel();
 
     /**
      * Registers the logger as the instance to use for the current thread.
diff --git a/src/com/android/tradefed/log/LogRegistry.java b/src/com/android/tradefed/log/LogRegistry.java
index 07b4c1d..e38912d 100644
--- a/src/com/android/tradefed/log/LogRegistry.java
+++ b/src/com/android/tradefed/log/LogRegistry.java
@@ -78,7 +78,7 @@
      * {@inheritDoc}
      */
     @Override
-    public void setGlobalLogDisplayLevel(String logLevel) {
+    public void setGlobalLogDisplayLevel(LogLevel logLevel) {
         mGlobalLogger.setLogLevelDisplay(logLevel);
     }
 
@@ -94,7 +94,7 @@
      * {@inheritDoc}
      */
     @Override
-    public String getGlobalLogDisplayLevel() {
+    public LogLevel getGlobalLogDisplayLevel() {
         return mGlobalLogger.getLogLevelDisplay();
     }
 
@@ -159,7 +159,7 @@
     @Override
     public void printLog(LogLevel logLevel, String tag, String message) {
         ILeveledLogOutput log = getLogger();
-        LogLevel currentLogLevel = LogLevel.getByString(log.getLogLevel());
+        LogLevel currentLogLevel = log.getLogLevel();
         if (logLevel.getPriority() >= currentLogLevel.getPriority()) {
             log.printLog(logLevel, tag, message);
         }
diff --git a/src/com/android/tradefed/log/StdoutLogger.java b/src/com/android/tradefed/log/StdoutLogger.java
index f98e232..02a9a25 100644
--- a/src/com/android/tradefed/log/StdoutLogger.java
+++ b/src/com/android/tradefed/log/StdoutLogger.java
@@ -32,7 +32,7 @@
 
     @Option(name="log-level", description="minimum log level to display. Must be one of " +
             LogUtil.LOG_LEVEL_LIST +".", importance = Importance.ALWAYS)
-    private String mLogLevel = LogLevel.INFO.getStringValue();
+    private LogLevel mLogLevel = LogLevel.INFO;
 
     /**
      * {@inheritDoc}
@@ -52,14 +52,14 @@
     /**
      * {@inheritDoc}
      */
-    public void setLogLevel(String logLevel) {
+    public void setLogLevel(LogLevel logLevel) {
         mLogLevel = logLevel;
     }
 
     /**
      * {@inheritDoc}
      */
-    public String getLogLevel() {
+    public LogLevel getLogLevel() {
         return mLogLevel;
     }
 
diff --git a/tests/src/com/android/tradefed/config/ConfigurationFactoryTest.java b/tests/src/com/android/tradefed/config/ConfigurationFactoryTest.java
index 090112a..e5b6ee7 100644
--- a/tests/src/com/android/tradefed/config/ConfigurationFactoryTest.java
+++ b/tests/src/com/android/tradefed/config/ConfigurationFactoryTest.java
@@ -126,7 +126,7 @@
         IConfiguration config = mFactory.createConfigurationFromArgs(new String[] {TEST_CONFIG,
                 "--log-level", LogLevel.VERBOSE.getStringValue()});
         ILeveledLogOutput logger = config.getLogOutput();
-        assertEquals(LogLevel.VERBOSE.getStringValue(), logger.getLogLevel());
+        assertEquals(LogLevel.VERBOSE, logger.getLogLevel());
     }
 
     /**
diff --git a/tests/src/com/android/tradefed/log/LogRegistryTest.java b/tests/src/com/android/tradefed/log/LogRegistryTest.java
index 2f998f3..801d3db 100644
--- a/tests/src/com/android/tradefed/log/LogRegistryTest.java
+++ b/tests/src/com/android/tradefed/log/LogRegistryTest.java
@@ -73,7 +73,7 @@
         ILeveledLogOutput mockLogger = EasyMock.createMock(ILeveledLogOutput.class);
         mLogRegistry.registerLogger(mockLogger);
 
-        EasyMock.expect(mockLogger.getLogLevel()).andReturn(LogLevel.VERBOSE.getStringValue());
+        EasyMock.expect(mockLogger.getLogLevel()).andReturn(LogLevel.VERBOSE);
         mockLogger.printLog(LogLevel.VERBOSE, LOG_TAG, testMessage);
 
         EasyMock.replay(mockLogger);
@@ -91,7 +91,7 @@
         mLogRegistry.registerLogger(mockLogger);
 
         // Setting LogLevel == ERROR will let everything print
-        EasyMock.expect(mockLogger.getLogLevel()).andReturn(LogLevel.ERROR.getStringValue());
+        EasyMock.expect(mockLogger.getLogLevel()).andReturn(LogLevel.ERROR);
 
         EasyMock.replay(mockLogger);
         mLogRegistry.printLog(LogLevel.VERBOSE, LOG_TAG, testMessage);
@@ -132,10 +132,10 @@
         }
 
         // first thread calls
-        EasyMock.expect(mockLogger.getLogLevel()).andReturn(LogLevel.VERBOSE.getStringValue());
+        EasyMock.expect(mockLogger.getLogLevel()).andReturn(LogLevel.VERBOSE);
         mockLogger.printLog(LogLevel.VERBOSE, LOG_TAG, testMessage);
         // second thread should inherit same logger
-        EasyMock.expect(mockLogger.getLogLevel()).andReturn(LogLevel.ERROR.getStringValue());
+        EasyMock.expect(mockLogger.getLogLevel()).andReturn(LogLevel.ERROR);
         mockLogger.printLog(LogLevel.ERROR, LOG_TAG, testMessage);
 
         EasyMock.replay(mockLogger);