Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca89abc9 authored by Ats Jenk's avatar Ats Jenk
Browse files

If ProtoLog is not required, add fallback to logcat

Checks if logcat is enabled for a tag. If it is, logs directly to logcat from the stub class.
Only applicable if REQUIRE_PROTOLOGTOOL is set to false which is only set in sysui studio based builds.

Protolog tool does not run on the gradle based sysui studio build. Without the logcat fallback, sysui studio builds do not have any logging from protolog.

This change does introduce a dependency on android.util.Log in ProtoLog class. This class is part of common sources for ProtoLog. And is imported in the protolog tool itself. Had to create a new filtered target of protolog common sources that excludes the ProtoLog class.

Bug: 283499455
Test: m -j
Test: build sysui from studio, enable ProtoLog to logcat for a tag, observe logs in logcat

Change-Id: I9a085deaf39be1fb503c0df928a307e55c48ea4b
parent 7713260e
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -510,6 +510,17 @@ filegroup {
    ],
}

// common protolog sources without classes that rely on Android SDK
filegroup {
    name: "protolog-common-no-android-src",
    srcs: [
        ":protolog-common-src",
    ],
    exclude_srcs: [
        "com/android/internal/protolog/common/ProtoLog.java",
    ],
}

java_library {
    name: "protolog-lib",
    platform_apis: true,
+20 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.internal.protolog.common;

import android.util.Log;

/**
 * ProtoLog API - exposes static logging methods. Usage of this API is similar
 * to {@code android.utils.Log} class. Instead of plain text log messages each call consists of
@@ -53,6 +55,9 @@ public class ProtoLog {
            throw new UnsupportedOperationException(
                    "ProtoLog calls MUST be processed with ProtoLogTool");
        }
        if (group.isLogToLogcat()) {
            Log.d(group.getTag(), String.format(messageString, args));
        }
    }

    /**
@@ -68,6 +73,9 @@ public class ProtoLog {
            throw new UnsupportedOperationException(
                    "ProtoLog calls MUST be processed with ProtoLogTool");
        }
        if (group.isLogToLogcat()) {
            Log.v(group.getTag(), String.format(messageString, args));
        }
    }

    /**
@@ -83,6 +91,9 @@ public class ProtoLog {
            throw new UnsupportedOperationException(
                    "ProtoLog calls MUST be processed with ProtoLogTool");
        }
        if (group.isLogToLogcat()) {
            Log.i(group.getTag(), String.format(messageString, args));
        }
    }

    /**
@@ -98,6 +109,9 @@ public class ProtoLog {
            throw new UnsupportedOperationException(
                    "ProtoLog calls MUST be processed with ProtoLogTool");
        }
        if (group.isLogToLogcat()) {
            Log.w(group.getTag(), String.format(messageString, args));
        }
    }

    /**
@@ -113,6 +127,9 @@ public class ProtoLog {
            throw new UnsupportedOperationException(
                    "ProtoLog calls MUST be processed with ProtoLogTool");
        }
        if (group.isLogToLogcat()) {
            Log.e(group.getTag(), String.format(messageString, args));
        }
    }

    /**
@@ -128,5 +145,8 @@ public class ProtoLog {
            throw new UnsupportedOperationException(
                    "ProtoLog calls MUST be processed with ProtoLogTool");
        }
        if (group.isLogToLogcat()) {
            Log.wtf(group.getTag(), String.format(messageString, args));
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ java_library_host {
    name: "protologtool-lib",
    srcs: [
        "src/com/android/protolog/tool/**/*.kt",
        ":protolog-common-src",
        ":protolog-common-no-android-src",
    ],
    static_libs: [
        "javaparser",