Merge "Add an option to prevent the disabling of ddms logging"
diff --git a/src/com/android/tradefed/log/BaseLeveledLogOutput.java b/src/com/android/tradefed/log/BaseLeveledLogOutput.java
index c22468d..91219cb 100644
--- a/src/com/android/tradefed/log/BaseLeveledLogOutput.java
+++ b/src/com/android/tradefed/log/BaseLeveledLogOutput.java
@@ -20,6 +20,8 @@
import com.android.tradefed.config.Option;
import com.android.tradefed.log.LogUtil.CLog;
+import com.google.common.collect.ImmutableMap;
+
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -52,6 +54,15 @@
)
private Map<String, LogLevel> mComponentVerbosity = new HashMap<>();
+ @Option(
+ name = "force-verbosity-map",
+ description = "Enforce a pre-set verbosity of some component to avoid extreme logging.")
+ private boolean mEnableForcedVerbosity = true;
+
+ // Add components we have less control over (ddmlib for example) to ensure they don't flood
+ // us. This will still write to the log.
+ private Map<String, LogLevel> mForcedVerbosity = ImmutableMap.of("ddms", LogLevel.WARN);
+
private Map<String, LogLevel> mVerbosityMap = new HashMap<>();
/** Initialize the components filters based on the invocation {@link IConfiguration}. */
@@ -102,12 +113,22 @@
receiver.put(objTag, components.get(component));
}
}
- // Add components we have less control over (ddmlib for example) to ensure they don't flood
- // us. This will still write to the log.
- mVerbosityMap.put("ddms", LogLevel.WARN);
+ if (shouldForceVerbosity()) {
+ mVerbosityMap.putAll(mForcedVerbosity);
+ }
}
/** {@inheritDoc} */
@Override
public abstract ILeveledLogOutput clone();
+
+ /** Whether or not to enforce the verbosity map. */
+ public boolean shouldForceVerbosity() {
+ return mEnableForcedVerbosity;
+ }
+
+ /** Returns the map of the forced verbosity. */
+ public Map<String, LogLevel> getForcedVerbosityMap() {
+ return mForcedVerbosity;
+ }
}
diff --git a/src/com/android/tradefed/log/BaseStreamLogger.java b/src/com/android/tradefed/log/BaseStreamLogger.java
index 5027386..ec5adb6 100644
--- a/src/com/android/tradefed/log/BaseStreamLogger.java
+++ b/src/com/android/tradefed/log/BaseStreamLogger.java
@@ -22,22 +22,10 @@
import java.io.IOException;
import java.io.OutputStream;
-import java.util.HashMap;
-import java.util.Map;
/** A {@link ILeveledLogOutput} that directs log messages to an output stream and to stdout. */
public abstract class BaseStreamLogger<OS extends OutputStream> extends BaseLeveledLogOutput {
- /**
- * Map of log tag to a level they are forced at for writing to log file purpose. This ensure
- * that some logs we have less control over can still be regulated.
- */
- private static final Map<String, LogLevel> FORCED_LOG_LEVEL = new HashMap<>();
-
- static {
- FORCED_LOG_LEVEL.put("ddms", LogLevel.WARN);
- }
-
@Option(name = "log-level", description = "the minimum log level to log.")
private LogLevel mLogLevel = LogLevel.DEBUG;
@@ -109,8 +97,8 @@
// Determines whether a message should be written to the output stream.
private boolean shouldWrite(String tag, LogLevel messageLogLevel, LogLevel invocationLogLevel) {
- LogLevel forcedLevel = FORCED_LOG_LEVEL.get(tag);
- if (forcedLevel == null) {
+ LogLevel forcedLevel = getForcedVerbosityMap().get(tag);
+ if (forcedLevel == null || !shouldForceVerbosity()) {
return true;
}
// Use the highest level of our forced and invocation to decide if we should log the