From a0e6fa312d0cb9c9af89d636a80e7bdb23df6160 Mon Sep 17 00:00:00 2001 From: nsingh-branch Date: Fri, 19 Apr 2024 12:08:10 -0700 Subject: [PATCH 1/4] Add BranchLogLevel --- .../main/java/io/branch/referral/Branch.java | 29 +++++++++++---- .../java/io/branch/referral/BranchLogger.kt | 37 ++++++++++--------- 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/Branch-SDK/src/main/java/io/branch/referral/Branch.java b/Branch-SDK/src/main/java/io/branch/referral/Branch.java index 1713cb89e..3cc8377da 100644 --- a/Branch-SDK/src/main/java/io/branch/referral/Branch.java +++ b/Branch-SDK/src/main/java/io/branch/referral/Branch.java @@ -1900,21 +1900,34 @@ private boolean pathMatch(String templatePath, String path) { } /** - * Enable Logging, independent of Debug Mode. + * Enable logging with a specific log level, independent of Debug Mode. + * + * @param iBranchLogging Optional interface to receive logging from the SDK. + * @param level The minimum log level for logging output. + */ + public static void enableLogging(IBranchLoggingCallbacks iBranchLogging, BranchLogger.BranchLogLevel level) { + BranchLogger.setLoggerCallback(iBranchLogging); + BranchLogger.setMinimumLogLevel(level); + BranchLogger.setLoggingEnabled(true); + BranchLogger.logAlways(GOOGLE_VERSION_TAG); + } + + /** + * Enable Logging, independent of Debug Mode. Defaults to DEBUG level. */ public static void enableLogging() { - enableLogging(null); + enableLogging(null, BranchLogger.BranchLogLevel.DEBUG); } /** - * Optional interface. Implement a callback to receive logging from the SDK directly to your + * Enable Logging, independent of Debug Mode. Defaults to DEBUG level. + * Implement a callback to receive logging from the SDK directly to your * own logging solution. If null, and enabled, the default android.util.Log is used. - * @param iBranchLogging + * + * @param iBranchLogging Optional interface to receive logging from the SDK. */ - public static void enableLogging(IBranchLoggingCallbacks iBranchLogging){ - BranchLogger.setLoggerCallback(iBranchLogging); - BranchLogger.logAlways(GOOGLE_VERSION_TAG); - BranchLogger.setLoggingEnabled(true); + public static void enableLogging(IBranchLoggingCallbacks iBranchLogging) { + enableLogging(iBranchLogging, BranchLogger.BranchLogLevel.DEBUG); } /** diff --git a/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt b/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt index 2dc4cb4ee..507b1d82c 100644 --- a/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt +++ b/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt @@ -10,12 +10,21 @@ object BranchLogger { private const val TAG = "BranchSDK" + enum class BranchLogLevel(val level: Int) { + ERROR(1), WARN(2), INFO(3), DEBUG(4), VERBOSE(5) + } + + @JvmStatic + var minimumLogLevel: BranchLogLevel = BranchLogLevel.DEBUG + @JvmStatic var loggingEnabled = false @JvmStatic var loggerCallback: IBranchLoggingCallbacks? = null + private fun shouldLog(level: BranchLogLevel): Boolean = level.level <= minimumLogLevel.level + /** *

Creates a Error message in the debugger. If debugging is disabled, this will fail silently.

* @@ -23,11 +32,10 @@ object BranchLogger { */ @JvmStatic fun e(message: String) { - if (loggingEnabled && message.isNotEmpty()) { + if (loggingEnabled && shouldLog(BranchLogLevel.ERROR) && message.isNotEmpty()) { if (useCustomLogger()) { loggerCallback?.onBranchLog(message, "ERROR") - } - else { + } else { Log.e(TAG, message) } } @@ -40,11 +48,10 @@ object BranchLogger { */ @JvmStatic fun w(message: String) { - if (loggingEnabled && message.isNotEmpty()) { + if (loggingEnabled && shouldLog(BranchLogLevel.WARN) && message.isNotEmpty()) { if (useCustomLogger()) { loggerCallback?.onBranchLog(message, "WARN") - } - else { + } else { Log.w(TAG, message) } } @@ -57,11 +64,10 @@ object BranchLogger { */ @JvmStatic fun i(message: String) { - if (loggingEnabled && message.isNotEmpty()) { + if (loggingEnabled && shouldLog(BranchLogLevel.INFO) && message.isNotEmpty()) { if(useCustomLogger()) { loggerCallback?.onBranchLog(message, "INFO") - } - else { + } else { Log.i(TAG, message) } } @@ -74,11 +80,10 @@ object BranchLogger { */ @JvmStatic fun d(message: String?) { - if (loggingEnabled && message?.isNotEmpty() == true) { + if (loggingEnabled && shouldLog(BranchLogLevel.DEBUG) && message?.isNotEmpty() == true) { if (useCustomLogger()) { loggerCallback?.onBranchLog(message, "DEBUG") - } - else { + } else { Log.d(TAG, message) } } @@ -91,11 +96,10 @@ object BranchLogger { */ @JvmStatic fun v(message: String) { - if (loggingEnabled && message.isNotEmpty()) { + if (loggingEnabled && shouldLog(BranchLogLevel.VERBOSE) && message.isNotEmpty()) { if (useCustomLogger()) { loggerCallback?.onBranchLog(message, "VERBOSE") - } - else { + } else { Log.v(TAG, message) } } @@ -106,8 +110,7 @@ object BranchLogger { if (message.isNotEmpty()) { if (useCustomLogger()) { loggerCallback?.onBranchLog(message, "INFO") - } - else { + } else { Log.i(TAG, message) } } From b2bed10baade219c138b0d36ddfcef731df2178a Mon Sep 17 00:00:00 2001 From: nsingh-branch Date: Fri, 19 Apr 2024 12:12:16 -0700 Subject: [PATCH 2/4] Added verbose check in printQueue --- .../java/io/branch/referral/ServerRequestQueue.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java b/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java index d892d7a10..9e0e3dd9c 100644 --- a/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java +++ b/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java @@ -183,12 +183,15 @@ ServerRequest peek() { } public void printQueue(){ - synchronized (reqQueueLockObject){ - StringBuilder stringBuilder = new StringBuilder(); - for(int i = 0; i < queue.size(); i++){ - stringBuilder.append(queue.get(i)).append(" with locks ").append(queue.get(i).printWaitLocks()).append("\n"); + // Only print the queue if the log level is verbose + if (BranchLogger.getMinimumLogLevel().getLevel() == BranchLogger.BranchLogLevel.VERBOSE.getLevel()) { + synchronized (reqQueueLockObject) { + StringBuilder stringBuilder = new StringBuilder(); + for (int i = 0; i < queue.size(); i++) { + stringBuilder.append(queue.get(i)).append(" with locks ").append(queue.get(i).printWaitLocks()).append("\n"); + } + BranchLogger.v("Queue is: " + stringBuilder); } - BranchLogger.v("Queue is: " + stringBuilder); } } From be33dc7c6a411e96d02c8efb57704feb8ab5537e Mon Sep 17 00:00:00 2001 From: nsingh-branch Date: Tue, 23 Apr 2024 10:47:41 -0700 Subject: [PATCH 3/4] Updated naming and public methods --- .../branchandroidtestbed/CustomBranchApp.java | 3 ++- .../main/java/io/branch/referral/Branch.java | 18 ++++++++++++++---- .../java/io/branch/referral/BranchLogger.kt | 4 ++-- .../io/branch/referral/ServerRequestQueue.java | 2 +- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/Branch-SDK-TestBed/src/main/java/io/branch/branchandroidtestbed/CustomBranchApp.java b/Branch-SDK-TestBed/src/main/java/io/branch/branchandroidtestbed/CustomBranchApp.java index 57bf66696..ab64ed46b 100644 --- a/Branch-SDK-TestBed/src/main/java/io/branch/branchandroidtestbed/CustomBranchApp.java +++ b/Branch-SDK-TestBed/src/main/java/io/branch/branchandroidtestbed/CustomBranchApp.java @@ -5,6 +5,7 @@ import io.branch.interfaces.IBranchLoggingCallbacks; import io.branch.referral.Branch; +import io.branch.referral.BranchLogger; public final class CustomBranchApp extends Application { @Override @@ -17,7 +18,7 @@ public void onBranchLog(String logMessage, String severityConstantName) { Log.v( "CustomTag", logMessage); } }; - Branch.enableLogging(); // Pass in iBranchLoggingCallbacks to enable logging redirects + Branch.enableLogging(BranchLogger.BranchLogLevel.VERBOSE); // Pass in iBranchLoggingCallbacks to enable logging redirects Branch.getAutoInstance(this); } } diff --git a/Branch-SDK/src/main/java/io/branch/referral/Branch.java b/Branch-SDK/src/main/java/io/branch/referral/Branch.java index 3cc8377da..8a878fb3f 100644 --- a/Branch-SDK/src/main/java/io/branch/referral/Branch.java +++ b/Branch-SDK/src/main/java/io/branch/referral/Branch.java @@ -1905,9 +1905,9 @@ private boolean pathMatch(String templatePath, String path) { * @param iBranchLogging Optional interface to receive logging from the SDK. * @param level The minimum log level for logging output. */ - public static void enableLogging(IBranchLoggingCallbacks iBranchLogging, BranchLogger.BranchLogLevel level) { + private static void enableLogging(IBranchLoggingCallbacks iBranchLogging, BranchLogger.BranchLogLevel level) { BranchLogger.setLoggerCallback(iBranchLogging); - BranchLogger.setMinimumLogLevel(level); + BranchLogger.setLogLevel(level); BranchLogger.setLoggingEnabled(true); BranchLogger.logAlways(GOOGLE_VERSION_TAG); } @@ -1920,14 +1920,24 @@ public static void enableLogging() { } /** - * Enable Logging, independent of Debug Mode. Defaults to DEBUG level. + * Enable Logging, independent of Debug Mode. Set to VERBOSE level. * Implement a callback to receive logging from the SDK directly to your * own logging solution. If null, and enabled, the default android.util.Log is used. * * @param iBranchLogging Optional interface to receive logging from the SDK. */ public static void enableLogging(IBranchLoggingCallbacks iBranchLogging) { - enableLogging(iBranchLogging, BranchLogger.BranchLogLevel.DEBUG); + enableLogging(iBranchLogging, BranchLogger.BranchLogLevel.VERBOSE); + } + + /** + * Enable logging with a specific log level. + * + * @param level The minimum log level for logging output. + */ + public static void enableLogging(BranchLogger.BranchLogLevel level) { + enableLogging(null, level); + } /** diff --git a/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt b/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt index 507b1d82c..fca0ca2a8 100644 --- a/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt +++ b/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt @@ -15,7 +15,7 @@ object BranchLogger { } @JvmStatic - var minimumLogLevel: BranchLogLevel = BranchLogLevel.DEBUG + var logLevel: BranchLogLevel = BranchLogLevel.DEBUG @JvmStatic var loggingEnabled = false @@ -23,7 +23,7 @@ object BranchLogger { @JvmStatic var loggerCallback: IBranchLoggingCallbacks? = null - private fun shouldLog(level: BranchLogLevel): Boolean = level.level <= minimumLogLevel.level + private fun shouldLog(level: BranchLogLevel): Boolean = level.level <= logLevel.level /** *

Creates a Error message in the debugger. If debugging is disabled, this will fail silently.

diff --git a/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java b/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java index 9e0e3dd9c..ad7e0b4cd 100644 --- a/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java +++ b/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java @@ -184,7 +184,7 @@ ServerRequest peek() { public void printQueue(){ // Only print the queue if the log level is verbose - if (BranchLogger.getMinimumLogLevel().getLevel() == BranchLogger.BranchLogLevel.VERBOSE.getLevel()) { + if (BranchLogger.getLogLevel().getLevel() == BranchLogger.BranchLogLevel.VERBOSE.getLevel()) { synchronized (reqQueueLockObject) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < queue.size(); i++) { From 70528274a4c7d27feb7b540afd006234db963d64 Mon Sep 17 00:00:00 2001 From: nsingh-branch Date: Tue, 23 Apr 2024 10:49:28 -0700 Subject: [PATCH 4/4] Updated logLevel to loggingLevel --- Branch-SDK/src/main/java/io/branch/referral/Branch.java | 2 +- .../src/main/java/io/branch/referral/BranchLogger.kt | 4 ++-- .../main/java/io/branch/referral/ServerRequestQueue.java | 7 +------ 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/Branch-SDK/src/main/java/io/branch/referral/Branch.java b/Branch-SDK/src/main/java/io/branch/referral/Branch.java index 8a878fb3f..2b8b1298a 100644 --- a/Branch-SDK/src/main/java/io/branch/referral/Branch.java +++ b/Branch-SDK/src/main/java/io/branch/referral/Branch.java @@ -1907,7 +1907,7 @@ private boolean pathMatch(String templatePath, String path) { */ private static void enableLogging(IBranchLoggingCallbacks iBranchLogging, BranchLogger.BranchLogLevel level) { BranchLogger.setLoggerCallback(iBranchLogging); - BranchLogger.setLogLevel(level); + BranchLogger.setLoggingLevel(level); BranchLogger.setLoggingEnabled(true); BranchLogger.logAlways(GOOGLE_VERSION_TAG); } diff --git a/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt b/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt index fca0ca2a8..cd4ffe78a 100644 --- a/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt +++ b/Branch-SDK/src/main/java/io/branch/referral/BranchLogger.kt @@ -15,7 +15,7 @@ object BranchLogger { } @JvmStatic - var logLevel: BranchLogLevel = BranchLogLevel.DEBUG + var loggingLevel: BranchLogLevel = BranchLogLevel.DEBUG @JvmStatic var loggingEnabled = false @@ -23,7 +23,7 @@ object BranchLogger { @JvmStatic var loggerCallback: IBranchLoggingCallbacks? = null - private fun shouldLog(level: BranchLogLevel): Boolean = level.level <= logLevel.level + private fun shouldLog(level: BranchLogLevel): Boolean = level.level <= loggingLevel.level /** *

Creates a Error message in the debugger. If debugging is disabled, this will fail silently.

diff --git a/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java b/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java index ad7e0b4cd..20e17aaf4 100644 --- a/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java +++ b/Branch-SDK/src/main/java/io/branch/referral/ServerRequestQueue.java @@ -7,7 +7,6 @@ import android.content.SharedPreferences; import android.os.Handler; import android.os.Looper; -import android.text.TextUtils; import androidx.annotation.Nullable; @@ -15,12 +14,8 @@ import org.json.JSONException; import org.json.JSONObject; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; -import java.util.ConcurrentModificationException; import java.util.HashMap; -import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.NoSuchElementException; @@ -184,7 +179,7 @@ ServerRequest peek() { public void printQueue(){ // Only print the queue if the log level is verbose - if (BranchLogger.getLogLevel().getLevel() == BranchLogger.BranchLogLevel.VERBOSE.getLevel()) { + if (BranchLogger.getLoggingLevel().getLevel() == BranchLogger.BranchLogLevel.VERBOSE.getLevel()) { synchronized (reqQueueLockObject) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < queue.size(); i++) {