Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SDK-2527] Add request & response objects to the BranchLogCallback #1458

Merged
merged 4 commits into from
Dec 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions Branch-TestBed/Branch-TestBed/AppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,23 @@ - (BOOL)application:(UIApplication *)application
// test pre init support
//[self testDispatchToIsolationQueue:branch]


[Branch enableLoggingAtLevel:BranchLogLevelVerbose withCallback:^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error) {
[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);
} else {
NSLog(@"[BranchLog] Level: %lu, Message: %@", (unsigned long)logLevel, message);
}

if (request) {
NSString *jsonString = [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding];
nsingh-branch marked this conversation as resolved.
Show resolved Hide resolved
NSLog(@"[BranchLog] Got %@ Request: %@", request.URL , jsonString);
}

if (response) {
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]
: [NSString stringWithFormat:@"Level: %lu, Message: %@", (unsigned long)logLevel, message];
APPLogHookFunction([NSDate date], logLevel, logEntry);
Expand Down
4 changes: 2 additions & 2 deletions Sources/BranchSDK/BNCServerInterface.m
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ - (NSURLRequest *)preparePostRequest:(NSDictionary *)params url:(NSString *)url
[request setHTTPBody:postData];

if ([[BranchLogger shared] shouldLog:BranchLogLevelDebug]) {
[[BranchLogger shared] logDebug:[NSString stringWithFormat:@"%@\nHeaders %@\nBody %@", request, [request allHTTPHeaderFields], [BNCEncodingUtils prettyPrintJSON:updatedParams]] error:nil];
[[BranchLogger shared] logDebug:[NSString stringWithFormat:@"%@\nHeaders %@\nBody %@", request, [request allHTTPHeaderFields], [BNCEncodingUtils prettyPrintJSON:updatedParams]] error:nil request:request response:nil];
}

return request;
Expand All @@ -310,7 +310,7 @@ - (BNCServerResponse *)processServerResponse:(NSURLResponse *)response data:(NSD
serverResponse.requestId = requestId;

if ([[BranchLogger shared] shouldLog:BranchLogLevelDebug]) {
[[BranchLogger shared] logDebug:[NSString stringWithFormat:@"%@\nBody %@", response, [BNCEncodingUtils prettyPrintJSON:serverResponse.data]] error:nil];
[[BranchLogger shared] logDebug:[NSString stringWithFormat:@"%@\nBody %@", response, [BNCEncodingUtils prettyPrintJSON:serverResponse.data]] error:nil request:nil response:serverResponse];
}

} else {
Expand Down
9 changes: 9 additions & 0 deletions Sources/BranchSDK/Branch.m
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
25 changes: 17 additions & 8 deletions Sources/BranchSDK/BranchLogger.m
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,29 @@ - (void)disableCallerDetails {
}

- (void)logError:(NSString *)message error:(NSError *_Nullable)error {
[self logMessage:message withLevel:BranchLogLevelError error:error];
[self logMessage:message withLevel:BranchLogLevelError error:error request:nil response:nil];
}

- (void)logWarning:(NSString *)message error:(NSError *_Nullable)error {
[self logMessage:message withLevel:BranchLogLevelWarning error:error];
[self logMessage:message withLevel:BranchLogLevelWarning error:error request:nil response:nil];
}

- (void)logDebug:(NSString *)message error:(NSError *_Nullable)error {
[self logMessage:message withLevel:BranchLogLevelDebug error:error];
- (void)logDebug:(NSString * _Nonnull)message error:(NSError * _Nullable)error {
[self logDebug:message error:error request:nil response:nil];
}

- (void)logDebug:(NSString * _Nonnull)message
error:(NSError * _Nullable)error
request:(NSMutableURLRequest * _Nullable)request
response:(BNCServerResponse * _Nullable)response {
[self logMessage:message withLevel:BranchLogLevelDebug error:error request:request response:response];
}

- (void)logVerbose:(NSString *)message error:(NSError *_Nullable)error {
[self logMessage:message withLevel:BranchLogLevelVerbose error:error];
[self logMessage:message withLevel:BranchLogLevelVerbose error:error request:nil response:nil];
}

- (void)logMessage:(NSString *)message withLevel:(BranchLogLevel)level error:(NSError *_Nullable)error {
- (void)logMessage:(NSString *)message withLevel:(BranchLogLevel)level error:(NSError *_Nullable)error request:(NSMutableURLRequest * _Nullable)request response:(BNCServerResponse * _Nullable)response {
if (!self.loggingEnabled || level < self.logLevelThreshold || message.length == 0) {
return;
}
Expand All @@ -77,8 +84,10 @@ - (void)logMessage:(NSString *)message withLevel:(BranchLogLevel)level error:(NS
if (self.includeCallerDetails) {
formattedMessage = [NSString stringWithFormat:@"%@ %@", [self callingClass], message];
}

if (self.logCallback) {

if (self.advancedLogCallback) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nsingh-branch Since advancedLogCallback is always non-null, its initialized in init, else if condition will never be executed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed the default init since it shouldn't be necessary to have both. All of the tests appear to be passing now.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did the new automation succeed as well?

self.advancedLogCallback(formattedMessage, level, error, request, response);
} else if (self.logCallback) {
self.logCallback(formattedMessage, level, error);
}
}
Expand Down
1 change: 1 addition & 0 deletions Sources/BranchSDK/Public/Branch.h
Original file line number Diff line number Diff line change
Expand Up @@ -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."))));
Expand Down
4 changes: 4 additions & 0 deletions Sources/BranchSDK/Public/BranchLogger.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

#import <Foundation/Foundation.h>
#import "BNCServerResponse.h"

typedef NS_ENUM(NSUInteger, BranchLogLevel) {
BranchLogLevelVerbose, // development
Expand All @@ -16,6 +17,7 @@ typedef NS_ENUM(NSUInteger, BranchLogLevel) {
};

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

Expand All @@ -24,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;
Expand All @@ -37,6 +40,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)logError:(NSString * _Nonnull)message error:(NSError * _Nullable)error;
- (void)logWarning:(NSString * _Nonnull)message error:(NSError * _Nullable)error;
- (void)logDebug:(NSString * _Nonnull)message error:(NSError * _Nullable)error;
- (void)logDebug:(NSString * _Nonnull)message error:(NSError * _Nullable)error request:(NSMutableURLRequest * _Nullable)request response:(BNCServerResponse * _Nullable)response;
- (void)logVerbose:(NSString * _Nonnull)message error:(NSError * _Nullable)error;

// default Branch log format
Expand Down
Loading