summaryrefslogtreecommitdiff
path: root/service/java/com/android/server/wifi
diff options
context:
space:
mode:
authormukesh agrawal <quiche@google.com>2016-08-05 14:29:30 -0700
committermukesh agrawal <quiche@google.com>2016-08-09 15:18:29 -0700
commitf5d90be206db98bbd5894afc8d757dd32360b2d9 (patch)
tree8576d7759a6be58ba0e7c8a0ea9de189a8780328 /service/java/com/android/server/wifi
parentf46c533931224296b11d98798344c049f88db9a1 (diff)
downloadwifi-f5d90be206db98bbd5894afc8d757dd32360b2d9.tar.gz
logging: add convenience APIs for literal messages
Literal messages are reasonably common, so we should make them easy to log. Add APIs for that purpose, and migrate WifiDiagnostics to use them. Note that, functionally speaking, the LogcatLog implementations of these APIs behave the same their corresponding legacy APIs. However, we add these APIs for two reasons: - To track which log messages have been audited, to determine whether or not they contain parameters. - So that the WifiLog implementation for the new backend can inform the backend that these messages are clean (free of any sensitive data). Finally, we note that these convenience APIs may also provide a performance benefit. (Because the message is parameter-less, there's no need to create a LogMessage.) While there: change the level of some WifiDiagnostics log messages, to fit our new logging guidelines. BUG=30737889 TEST=wifitests/runtests.sh Change-Id: I3d39c1932800af6a818c59b6497c868f8399f8fa
Diffstat (limited to 'service/java/com/android/server/wifi')
-rw-r--r--service/java/com/android/server/wifi/FakeWifiLog.java20
-rw-r--r--service/java/com/android/server/wifi/LogcatLog.java20
-rw-r--r--service/java/com/android/server/wifi/WifiDiagnostics.java18
-rw-r--r--service/java/com/android/server/wifi/WifiLog.java34
4 files changed, 83 insertions, 9 deletions
diff --git a/service/java/com/android/server/wifi/FakeWifiLog.java b/service/java/com/android/server/wifi/FakeWifiLog.java
index 69cd72503..a58d77f59 100644
--- a/service/java/com/android/server/wifi/FakeWifiLog.java
+++ b/service/java/com/android/server/wifi/FakeWifiLog.java
@@ -46,6 +46,26 @@ public class FakeWifiLog implements WifiLog {
return sDummyLogMessage;
}
+ @Override
+ public void eC(String msg) {
+ // Do nothing.
+ }
+
+ @Override
+ public void wC(String msg) {
+ // Do nothing.
+ }
+
+ @Override
+ public void iC(String msg) {
+ // Do nothing.
+ }
+
+ @Override
+ public void tC(String msg) {
+ // Do nothing.
+ }
+
// Legacy methods.
@Override
public void e(String msg) {
diff --git a/service/java/com/android/server/wifi/LogcatLog.java b/service/java/com/android/server/wifi/LogcatLog.java
index 45108d513..14e4dfd5e 100644
--- a/service/java/com/android/server/wifi/LogcatLog.java
+++ b/service/java/com/android/server/wifi/LogcatLog.java
@@ -62,6 +62,26 @@ class LogcatLog implements WifiLog {
return makeLogMessage(Log.VERBOSE, format);
}
+ @Override
+ public void eC(String msg) {
+ Log.e(mTag, msg);
+ }
+
+ @Override
+ public void wC(String msg) {
+ Log.w(mTag, msg);
+ }
+
+ @Override
+ public void iC(String msg) {
+ Log.i(mTag, msg);
+ }
+
+ @Override
+ public void tC(String msg) {
+ Log.d(mTag, msg);
+ }
+
/* Legacy methods */
@Override
public void e(String msg) {
diff --git a/service/java/com/android/server/wifi/WifiDiagnostics.java b/service/java/com/android/server/wifi/WifiDiagnostics.java
index 160cf6bdf..777f46358 100644
--- a/service/java/com/android/server/wifi/WifiDiagnostics.java
+++ b/service/java/com/android/server/wifi/WifiDiagnostics.java
@@ -154,7 +154,7 @@ class WifiDiagnostics extends BaseWifiDiagnostics {
}
if (!mWifiNative.startPktFateMonitoring()) {
- mLog.e("Failed to start packet fate monitoring");
+ mLog.wC("Failed to start packet fate monitoring");
}
}
@@ -163,7 +163,7 @@ class WifiDiagnostics extends BaseWifiDiagnostics {
if (mPerPacketRingBuffer != null) {
startLoggingRingBuffer(mPerPacketRingBuffer);
} else {
- if (DBG) mLog.d("There is no per packet ring buffer");
+ if (DBG) mLog.tC("There is no per packet ring buffer");
}
}
@@ -172,7 +172,7 @@ class WifiDiagnostics extends BaseWifiDiagnostics {
if (mPerPacketRingBuffer != null) {
stopLoggingRingBuffer(mPerPacketRingBuffer);
} else {
- if (DBG) mLog.d("There is no per packet ring buffer");
+ if (DBG) mLog.tC("There is no per packet ring buffer");
}
}
@@ -180,9 +180,9 @@ class WifiDiagnostics extends BaseWifiDiagnostics {
public synchronized void stopLogging() {
if (mIsLoggingEventHandlerRegistered) {
if (!mWifiNative.resetLogHandler()) {
- mLog.e("Fail to reset log handler");
+ mLog.wC("Fail to reset log handler");
} else {
- if (DBG) mLog.d("Reset log handler");
+ if (DBG) mLog.tC("Reset log handler");
}
// Clear mIsLoggingEventHandlerRegistered even if resetLogHandler() failed, because
// the log handler is in an indeterminate state.
@@ -424,7 +424,7 @@ class WifiDiagnostics extends BaseWifiDiagnostics {
}
}
} else {
- mLog.e("no ring buffers found");
+ mLog.wC("no ring buffers found");
}
return mRingBuffers != null;
@@ -439,7 +439,7 @@ class WifiDiagnostics extends BaseWifiDiagnostics {
private boolean startLoggingAllExceptPerPacketBuffers() {
if (mRingBuffers == null) {
- if (DBG) mLog.d("No ring buffers to log anything!");
+ if (DBG) mLog.tC("No ring buffers to log anything!");
return false;
}
@@ -544,7 +544,7 @@ class WifiDiagnostics extends BaseWifiDiagnostics {
compressor.end();
bos.close();
} catch (IOException e) {
- mLog.e("ByteArrayOutputStream close error");
+ mLog.wC("ByteArrayOutputStream close error");
result = android.util.Base64.encodeToString(input, Base64.DEFAULT);
return result;
}
@@ -588,7 +588,7 @@ class WifiDiagnostics extends BaseWifiDiagnostics {
}
private LimitedCircularArray<String> getKernelLog(int maxLines) {
- if (DBG) mLog.d("Reading kernel log ...");
+ if (DBG) mLog.tC("Reading kernel log ...");
LimitedCircularArray<String> lines = new LimitedCircularArray<String>(maxLines);
String log = mWifiNative.readKernelLog();
String logLines[] = log.split("\n");
diff --git a/service/java/com/android/server/wifi/WifiLog.java b/service/java/com/android/server/wifi/WifiLog.java
index dcdae33b5..5b2624222 100644
--- a/service/java/com/android/server/wifi/WifiLog.java
+++ b/service/java/com/android/server/wifi/WifiLog.java
@@ -106,6 +106,40 @@ public interface WifiLog {
LogMessage dump(@NonNull String format);
/**
+ * Log a warning using the default tag for this WifiLog instance. Mark
+ * the message as 'clean' (i.e. _not_ containing any sensitive data).
+ *
+ * NOTE: this method should only be used for literal strings. For messages with
+ * parameters, use err().
+ *
+ * @param msg the message to be logged
+ */
+ void eC(String msg);
+
+ /**
+ * Like {@link #eC(String)} eC()}, except that a warning-level message
+ * is logged.
+ */
+ void wC(String msg);
+
+ /**
+ * Like {@link #eC(String)} eC()}, except that an info-level message
+ * is logged.
+ */
+ void iC(String msg);
+
+ /**
+ * Like {@link #eC(String)} eC()}, except that a trace-level message
+ * is logged.
+ */
+ void tC(String msg);
+
+ /**
+ * Note: dC() is deliberately omitted, as "dumping" is inherently at
+ * odds with the intention that the caller pass in a literal string.
+ */
+
+ /**
* Represents a single log message.
*
* Implementations are expected _not_ to be thread-safe.