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) } }