From 797e456502c0884c70965a96b2fba817eb14e052 Mon Sep 17 00:00:00 2001 From: Andy Uhnak Date: Wed, 15 Jun 2022 17:09:08 +0100 Subject: [PATCH] Track non-fatal issues via analytics --- MatrixSDK/Utils/MXAnalyticsDelegate.h | 11 +++++++++++ MatrixSDK/Utils/MXLog.h | 6 +++++- MatrixSDK/Utils/MXLog.swift | 11 ++++++++--- MatrixSDK/Utils/MXLogObjcWrapper.h | 2 +- MatrixSDK/Utils/MXLogObjcWrapper.m | 4 ++-- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/MatrixSDK/Utils/MXAnalyticsDelegate.h b/MatrixSDK/Utils/MXAnalyticsDelegate.h index e41e63db56..d63b92135a 100644 --- a/MatrixSDK/Utils/MXAnalyticsDelegate.h +++ b/MatrixSDK/Utils/MXAnalyticsDelegate.h @@ -115,6 +115,17 @@ NS_ASSUME_NONNULL_BEGIN isReply:(BOOL)isReply startsThread:(BOOL)startsThread; +#pragma mark - Health metrics + +/** + Report a non-fatal issue, i.e. an internal error that did not result in a crash + + @param issue the description of the issue that occured + @param details a dictionary of additional context-dependent details about the issue + */ +- (void)trackNonFatalIssue:(NSString *)issue + details:(nullable NSDictionary *)details; + @end NS_ASSUME_NONNULL_END diff --git a/MatrixSDK/Utils/MXLog.h b/MatrixSDK/Utils/MXLog.h index bfd40d9583..b1515e9ce3 100644 --- a/MatrixSDK/Utils/MXLog.h +++ b/MatrixSDK/Utils/MXLog.h @@ -37,5 +37,9 @@ } #define MXLogFailure(message, ...) { \ - [MXLogObjcWrapper logFailure:[NSString stringWithFormat: message, ##__VA_ARGS__] file:@__FILE__ function:[NSString stringWithFormat:@"%s", __FUNCTION__] line:__LINE__]; \ + [MXLogObjcWrapper logFailure:[NSString stringWithFormat: message, ##__VA_ARGS__] details:nil file:@__FILE__ function:[NSString stringWithFormat:@"%s", __FUNCTION__] line:__LINE__]; \ +} + +#define MXLogFailureWithDetails(message, dictionary) { \ + [MXLogObjcWrapper logFailure:message details:dictionary file:@__FILE__ function:[NSString stringWithFormat:@"%s", __FUNCTION__] line:__LINE__]; \ } diff --git a/MatrixSDK/Utils/MXLog.swift b/MatrixSDK/Utils/MXLog.swift index 831943b360..a730bb872c 100644 --- a/MatrixSDK/Utils/MXLog.swift +++ b/MatrixSDK/Utils/MXLog.swift @@ -118,19 +118,24 @@ private var logger: SwiftyBeaver.Type = { logger.error(message, file, function, line: line) } - public static func failure(_ message: @autoclosure () -> Any, _ - file: String = #file, _ function: String = #function, line: Int = #line, context: Any? = nil) { + public static func failure(_ message: @autoclosure () -> Any, + details: @autoclosure () -> [String: Any]? = nil, + _ file: String = #file, _ function: String = #function, line: Int = #line, context: Any? = nil) { logger.error(message(), file, function, line: line, context: context) #if DEBUG assertionFailure("\(message())") + #else + MXSDKOptions.sharedInstance().analyticsDelegate?.trackNonFatalIssue("\(message())", details: details()) #endif } @available(swift, obsoleted: 5.4) - @objc public static func logFailure(_ message: String, file: String, function: String, line: Int) { + @objc public static func logFailure(_ message: String, details: [String: Any]? = nil, file: String, function: String, line: Int) { logger.error(message, file, function, line: line) #if DEBUG assertionFailure(message) + #else + MXSDKOptions.sharedInstance().analyticsDelegate?.trackNonFatalIssue(message, details: details) #endif } diff --git a/MatrixSDK/Utils/MXLogObjcWrapper.h b/MatrixSDK/Utils/MXLogObjcWrapper.h index 427e8609c8..be08ca3429 100644 --- a/MatrixSDK/Utils/MXLogObjcWrapper.h +++ b/MatrixSDK/Utils/MXLogObjcWrapper.h @@ -33,7 +33,7 @@ NS_ASSUME_NONNULL_BEGIN + (void)logError:(NSString *)message file:(NSString *)file function:(NSString *)function line:(NSUInteger)line; -+ (void)logFailure:(NSString *)message file:(NSString *)file function:(NSString *)function line:(NSUInteger)line; ++ (void)logFailure:(NSString *)message details:(nullable NSDictionary *)details file:(NSString *)file function:(NSString *)function line:(NSUInteger)line; @end diff --git a/MatrixSDK/Utils/MXLogObjcWrapper.m b/MatrixSDK/Utils/MXLogObjcWrapper.m index 82841b32b0..696e26e774 100644 --- a/MatrixSDK/Utils/MXLogObjcWrapper.m +++ b/MatrixSDK/Utils/MXLogObjcWrapper.m @@ -44,9 +44,9 @@ + (void)logError:(NSString *)message file:(NSString *)file function:(NSString *) [MXLog logError:message file:file function:function line:line]; } -+ (void)logFailure:(NSString *)message file:(NSString *)file function:(NSString *)function line:(NSUInteger)line ++ (void)logFailure:(NSString *)message details:(nullable NSDictionary *)details file:(NSString *)file function:(NSString *)function line:(NSUInteger)line { - [MXLog logFailure:message file:file function:function line:line]; + [MXLog logFailure:message details:details file:file function:function line:line]; } @end