[Crashlytics] Internal logging gating.#8114
Conversation
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. |
📝 PRs merging into main branchOur main branch should always be in a releasable state. If you are working on a larger change, or if you don't want this change to see the light of the day just yet, consider using a feature branch first, and only merge into the main branch when the code complete and ready to be released. |
This provides the flexibility to update the flag dynamically from the client side, replacing the static compile-time BuildConfig constant.
Generated by 🚫 Danger |
mrober
left a comment
There was a problem hiding this comment.
I started a common Firebase logger a few years ago, see https://github.com/firebase/firebase-android-sdk/tree/main/firebase-common/src/main/java/com/google/firebase/logger
I forget why we didn't migrate to it here. Can you please check if it would make sense to use the common logger, and add the gating there? Otherwise, this is fine, just 1 comment about a default value
| @@ -0,0 +1,4 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <resources> | |||
| <bool name="firebase_crashlytics_logcat_enabled">true</bool> | |||
There was a problem hiding this comment.
Instead of needing this, can we make the default value true when we read it?
There was a problem hiding this comment.
Crashlytics Logger already is consuming the common logger you shared!
For this bool definition, I see no way of getting rid of it since its absence will break the build.
Is this what you meant by defaulting the value or am I getting it wrong?
…on implementing local logic for the Log gating.
Resolves: #2973
Context
Crashlytics internal logging currently has no implementation to turn off all log events (within code scope).
Default configuration allows the following events to be printed:
Proposed Solution
Adding a resource bool flag, which is consumed at init stage and set to Logger as an additional control for log events (if enabled, previous logic will be executed).
Alternatives
Instead of using resources, adding a meta data definition at Crashlytics manifest so this flag can be consumed the same way as FirePerf does (link for reference: https://github.com/firebase/firebase-android-sdk/blob/main/firebase-perf/src/main/java/com/google/firebase/perf/util/Utils.java#L98).
Keep an eye: This approach consumes resources (which can hinder start up process) just to gate the log cat events (which is not Crashlytics priority).
Instead of consuming a resources flag, simply just aim for
BuildConfig.DEBUG.For release, use ProGuard rules to strip log interactions.
For debug sessions, disable log cat using
adb shell setprop log.tag.FirebaseCrashlytics SUPPRESS.