From bb02891baf80cb1450af86e423f44d0c96792b86 Mon Sep 17 00:00:00 2001 From: nsingh-branch Date: Tue, 10 Dec 2024 11:31:53 -0800 Subject: [PATCH] Created BranchAdvancedLogCallback --- Branch-TestBed/Branch-TestBed/AppDelegate.m | 4 ++-- Sources/BranchSDK/Branch.m | 9 +++++++++ Sources/BranchSDK/BranchLogger.m | 19 +++++++++++++++---- Sources/BranchSDK/Public/Branch.h | 1 + Sources/BranchSDK/Public/BranchLogger.h | 4 +++- 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/Branch-TestBed/Branch-TestBed/AppDelegate.m b/Branch-TestBed/Branch-TestBed/AppDelegate.m index 01d8c33d7..1639425e7 100644 --- a/Branch-TestBed/Branch-TestBed/AppDelegate.m +++ b/Branch-TestBed/Branch-TestBed/AppDelegate.m @@ -41,7 +41,7 @@ - (BOOL)application:(UIApplication *)application // test pre init support //[self testDispatchToIsolationQueue:branch] - [Branch enableLoggingAtLevel:BranchLogLevelVerbose withCallback:^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error, NSMutableURLRequest * _Nullable request, BNCServerResponse * _Nullable response) { + [Branch enableLoggingAtLevel:BranchLogLevelVerbose withAdvancedCallback:^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error, NSMutableURLRequest * _Nullable request, BNCServerResponse * _Nullable response) { // Handle the log message and error here. For example, printing to the console: if (error) { NSLog(@"[BranchLog] Level: %lu, Message: %@, Error: %@", (unsigned long)logLevel, message, error.localizedDescription); @@ -55,7 +55,7 @@ - (BOOL)application:(UIApplication *)application } if (response) { - NSLog(@"[BranchLog] Got Response for request(%@): %@", response.requestId, response.data); + NSLog(@"[BranchLog] Got Response for request (%@): %@", response.requestId, response.data); } NSString *logEntry = error ? [NSString stringWithFormat:@"Level: %lu, Message: %@, Error: %@", (unsigned long)logLevel, message, error.localizedDescription] diff --git a/Sources/BranchSDK/Branch.m b/Sources/BranchSDK/Branch.m index f1178f45c..a0036f74c 100644 --- a/Sources/BranchSDK/Branch.m +++ b/Sources/BranchSDK/Branch.m @@ -455,6 +455,15 @@ + (void)enableLoggingAtLevel:(BranchLogLevel)logLevel withCallback:(nullable Bra } } ++ (void)enableLoggingAtLevel:(BranchLogLevel)logLevel withAdvancedCallback:(nullable BranchAdvancedLogCallback)callback { + BranchLogger *logger = [BranchLogger shared]; + logger.loggingEnabled = YES; + logger.logLevelThreshold = logLevel; + if (callback) { + logger.advancedLogCallback = callback; + } +} + - (void)useEUEndpoints { [BNCServerAPI sharedInstance].useEUServers = YES; } diff --git a/Sources/BranchSDK/BranchLogger.m b/Sources/BranchSDK/BranchLogger.m index ce89b97c6..952faea1f 100644 --- a/Sources/BranchSDK/BranchLogger.m +++ b/Sources/BranchSDK/BranchLogger.m @@ -18,7 +18,16 @@ - (instancetype)init { _includeCallerDetails = YES; // default callback sends logs to os_log - _logCallback = ^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error, NSMutableURLRequest * _Nullable request, BNCServerResponse * _Nullable response) { + _logCallback = ^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error) { + NSString *formattedMessage = [BranchLogger formatMessage:message logLevel:logLevel error:error]; + + os_log_t log = os_log_create("io.branch.sdk", "BranchSDK"); + os_log_type_t osLogType = [BranchLogger osLogTypeForBranchLogLevel:logLevel]; + os_log_with_type(log, osLogType, "%{private}@", formattedMessage); + }; + + // default advanced callback sends logs to os_log + _advancedLogCallback = ^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error, NSMutableURLRequest * _Nullable request, BNCServerResponse * _Nullable response) { NSString *formattedMessage = [BranchLogger formatMessage:message logLevel:logLevel error:error]; os_log_t log = os_log_create("io.branch.sdk", "BranchSDK"); @@ -84,9 +93,11 @@ - (void)logMessage:(NSString *)message withLevel:(BranchLogLevel)level error:(NS if (self.includeCallerDetails) { formattedMessage = [NSString stringWithFormat:@"%@ %@", [self callingClass], message]; } - - if (self.logCallback) { - self.logCallback(formattedMessage, level, error, request, response); + + if (self.advancedLogCallback) { + self.advancedLogCallback(formattedMessage, level, error, request, response); + } else if (self.logCallback) { + self.logCallback(formattedMessage, level, error); } } diff --git a/Sources/BranchSDK/Public/Branch.h b/Sources/BranchSDK/Public/Branch.h index 3f381efeb..f82e60dc5 100644 --- a/Sources/BranchSDK/Public/Branch.h +++ b/Sources/BranchSDK/Public/Branch.h @@ -568,6 +568,7 @@ extern NSString * __nonnull const BNCSpotlightFeature; */ + (void)enableLogging; + (void)enableLoggingAtLevel:(BranchLogLevel)logLevel withCallback:(nullable BranchLogCallback)callback; ++ (void)enableLoggingAtLevel:(BranchLogLevel)logLevel withAdvancedCallback:(nullable BranchAdvancedLogCallback)callback; // The new logging system is independent of the Branch singleton and can be called earlier. - (void)enableLogging __attribute__((deprecated(("This API is deprecated. Please use the static version.")))); diff --git a/Sources/BranchSDK/Public/BranchLogger.h b/Sources/BranchSDK/Public/BranchLogger.h index 2079f4fe9..1d05cd88b 100644 --- a/Sources/BranchSDK/Public/BranchLogger.h +++ b/Sources/BranchSDK/Public/BranchLogger.h @@ -16,7 +16,8 @@ typedef NS_ENUM(NSUInteger, BranchLogLevel) { BranchLogLevelError, // severe errors. SDK is probably in a bad state. }; -typedef void(^BranchLogCallback)(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error, NSMutableURLRequest * _Nullable request, BNCServerResponse * _Nullable response); +typedef void(^BranchLogCallback)(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error); +typedef void(^BranchAdvancedLogCallback)(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error, NSMutableURLRequest * _Nullable request, BNCServerResponse * _Nullable response); NS_ASSUME_NONNULL_BEGIN @@ -25,6 +26,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, assign) BOOL loggingEnabled; @property (nonatomic, assign) BOOL includeCallerDetails; @property (nonatomic, copy, nullable) BranchLogCallback logCallback; +@property (nonatomic, copy, nullable) BranchAdvancedLogCallback advancedLogCallback; @property (nonatomic, assign) BranchLogLevel logLevelThreshold; + (instancetype _Nonnull)shared;