diff options
| author | 2024-08-26 15:18:07 +0000 | |
|---|---|---|
| committer | 2024-08-26 15:18:07 +0000 | |
| commit | 1664ccbb14ecf64fb8806a43d163bcdddf2f485b (patch) | |
| tree | 0c93eabcb2bfb01e90267046d8472bfc3f49a79f | |
| parent | 1edbd59859ab38a3e27bcaa0dce5a4aae7cd68f6 (diff) | |
| parent | 5004cd018a10c3053d48989d90215d5db8bba974 (diff) | |
Merge "Support unprocessed files when Perfetto protologging is not enabled" into main
| -rw-r--r-- | core/java/com/android/internal/protolog/LogcatOnlyProtoLogImpl.java | 26 | ||||
| -rw-r--r-- | core/java/com/android/internal/protolog/ProtoLog.java | 5 |
2 files changed, 18 insertions, 13 deletions
diff --git a/core/java/com/android/internal/protolog/LogcatOnlyProtoLogImpl.java b/core/java/com/android/internal/protolog/LogcatOnlyProtoLogImpl.java index b82c660fcf57..34e04181388d 100644 --- a/core/java/com/android/internal/protolog/LogcatOnlyProtoLogImpl.java +++ b/core/java/com/android/internal/protolog/LogcatOnlyProtoLogImpl.java @@ -40,6 +40,8 @@ import java.util.List; */ @Deprecated public class LogcatOnlyProtoLogImpl implements IProtoLog { + private static final String LOG_TAG = LogcatOnlyProtoLogImpl.class.getName(); + @Override public void log(LogLevel logLevel, IProtoLogGroup group, long messageHash, int paramsMask, Object[] args) { @@ -48,19 +50,21 @@ public class LogcatOnlyProtoLogImpl implements IProtoLog { @Override public void log(LogLevel logLevel, IProtoLogGroup group, String messageString, Object[] args) { - if (REQUIRE_PROTOLOGTOOL) { - throw new RuntimeException( - "REQUIRE_PROTOLOGTOOL not set to false before the first log call."); + if (REQUIRE_PROTOLOGTOOL && group.isLogToProto()) { + Log.w(LOG_TAG, "ProtoLog message not processed. Failed to log it to proto. " + + "Logging it below to logcat instead."); } - String formattedString = TextUtils.formatSimple(messageString, args); - switch (logLevel) { - case VERBOSE -> Log.v(group.getTag(), formattedString); - case INFO -> Log.i(group.getTag(), formattedString); - case DEBUG -> Log.d(group.getTag(), formattedString); - case WARN -> Log.w(group.getTag(), formattedString); - case ERROR -> Log.e(group.getTag(), formattedString); - case WTF -> Log.wtf(group.getTag(), formattedString); + if (group.isLogToLogcat() || group.isLogToProto()) { + String formattedString = TextUtils.formatSimple(messageString, args); + switch (logLevel) { + case VERBOSE -> Log.v(group.getTag(), formattedString); + case INFO -> Log.i(group.getTag(), formattedString); + case DEBUG -> Log.d(group.getTag(), formattedString); + case WARN -> Log.w(group.getTag(), formattedString); + case ERROR -> Log.e(group.getTag(), formattedString); + case WTF -> Log.wtf(group.getTag(), formattedString); + } } } diff --git a/core/java/com/android/internal/protolog/ProtoLog.java b/core/java/com/android/internal/protolog/ProtoLog.java index 660d3c99f538..bf77db7b6a33 100644 --- a/core/java/com/android/internal/protolog/ProtoLog.java +++ b/core/java/com/android/internal/protolog/ProtoLog.java @@ -63,6 +63,9 @@ public class ProtoLog { * @param groups The ProtoLog groups that will be used in the process. */ public static void init(IProtoLogGroup... groups) { + // These tracing instances are only used when we cannot or do not preprocess the source + // files to extract out the log strings. Otherwise, the trace calls are replaced with calls + // directly to the generated tracing implementations. if (android.tracing.Flags.perfettoProtologTracing()) { synchronized (sInitLock) { if (sProtoLogInstance != null) { @@ -76,8 +79,6 @@ public class ProtoLog { sProtoLogInstance = new PerfettoProtoLogImpl(groups); } } else { - // The first call to ProtoLog is likely to flip REQUIRE_PROTOLOGTOOL, which is when this - // static block will be executed before REQUIRE_PROTOLOGTOOL is actually set. sProtoLogInstance = new LogcatOnlyProtoLogImpl(); } } |