diff options
author | Ryan Wilson <wilsonryan@google.com> | 2018-04-25 09:45:36 -0400 |
---|---|---|
committer | Paul Beusterien <paulbeusterien@google.com> | 2018-04-25 06:45:36 -0700 |
commit | 260557691fae8ba34e262f480c632ab63b5133ee (patch) | |
tree | 7591bc9023e9c42e8a348758171a4fa41ed0cf19 /Firebase/Core | |
parent | 98d665b7927da3c30f86919ca810f9f6fa6a354e (diff) |
Add counter for errors and warnings logged. (#1168)
* Moved writes outside of dispatch_async block.
Diffstat (limited to 'Firebase/Core')
-rw-r--r-- | Firebase/Core/FIRLogger.m | 33 | ||||
-rw-r--r-- | Firebase/Core/Private/FIRLogger.h | 25 |
2 files changed, 58 insertions, 0 deletions
diff --git a/Firebase/Core/FIRLogger.m b/Firebase/Core/FIRLogger.m index faa0727..d4de2a0 100644 --- a/Firebase/Core/FIRLogger.m +++ b/Firebase/Core/FIRLogger.m @@ -57,6 +57,10 @@ const char *kFIRLoggerASLClientFacilityName = "com.firebase.app.logger"; const char *kFIRLoggerCustomASLMessageFormat = "$((Time)(J.3)) $(Sender)[$(PID)] <$((Level)(str))> $Message"; +/// Keys for the number of errors and warnings logged. +NSString *const kFIRLoggerErrorCountKey = @"/google/firebase/count_of_errors_logged"; +NSString *const kFIRLoggerWarningCountKey = @"/google/firebase/count_of_warnings_logged"; + static dispatch_once_t sFIRLoggerOnceToken; static aslclient sFIRLoggerClient; @@ -192,6 +196,7 @@ BOOL FIRIsLoggableLevel(FIRLoggerLevel loggerLevel, BOOL analyticsComponent) { #ifdef DEBUG void FIRResetLogger() { sFIRLoggerOnceToken = 0; + FIRResetNumberOfIssuesLogged(); [[NSUserDefaults standardUserDefaults] removeObjectForKey:kFIRPersistedDebugModeKey]; } @@ -238,6 +243,17 @@ void FIRLogBasic(FIRLoggerLevel level, dispatch_async(sFIRClientQueue, ^{ asl_log(sFIRLoggerClient, NULL, level, "%s", logMsg.UTF8String); }); + + // Keep count of how many errors and warnings are triggered. + if (level == FIRLoggerLevelError) { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSInteger errorCount = [defaults integerForKey:kFIRLoggerErrorCountKey]; + [defaults setInteger:errorCount + 1 forKey:kFIRLoggerErrorCountKey]; + } else if (level == FIRLoggerLevelWarning) { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSInteger warningCount = [defaults integerForKey:kFIRLoggerWarningCountKey]; + [defaults setInteger:warningCount + 1 forKey:kFIRLoggerWarningCountKey]; + } } #pragma clang diagnostic pop @@ -265,6 +281,23 @@ FIR_LOGGING_FUNCTION(Debug) #undef FIR_MAKE_LOGGER +#pragma mark - Number of errors and warnings + +NSInteger FIRNumberOfErrorsLogged(void) { + return [[NSUserDefaults standardUserDefaults] integerForKey:kFIRLoggerErrorCountKey]; +} + +NSInteger FIRNumberOfWarningsLogged(void) { + return [[NSUserDefaults standardUserDefaults] integerForKey:kFIRLoggerWarningCountKey]; +} + +void FIRResetNumberOfIssuesLogged(void) { + [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:kFIRLoggerErrorCountKey]; + [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:kFIRLoggerWarningCountKey]; +} + +#pragma mark - FIRLoggerWrapper + @implementation FIRLoggerWrapper + (void)logWithLevel:(FIRLoggerLevel)level diff --git a/Firebase/Core/Private/FIRLogger.h b/Firebase/Core/Private/FIRLogger.h index 358832f..e095e4e 100644 --- a/Firebase/Core/Private/FIRLogger.h +++ b/Firebase/Core/Private/FIRLogger.h @@ -42,6 +42,16 @@ extern FIRLoggerService kFIRLoggerRemoteConfig; extern FIRLoggerService kFIRLoggerStorage; extern FIRLoggerService kFIRLoggerSwizzler; +/** + * The key used to store the logger's error count. + */ +extern NSString *const kFIRLoggerErrorCountKey; + +/** + * The key used to store the logger's warning count. + */ +extern NSString *const kFIRLoggerWarningCountKey; + #ifdef __cplusplus extern "C" { #endif // __cplusplus @@ -62,6 +72,21 @@ void FIRSetAnalyticsDebugMode(BOOL analyticsDebugMode); void FIRSetLoggerLevel(FIRLoggerLevel loggerLevel); /** + * Retrieve the number of errors that have been logged since the stat was last reset. + */ +NSInteger FIRNumberOfErrorsLogged(void); + +/** + * Retrieve the number of warnings that have been logged since the stat was last reset. + */ +NSInteger FIRNumberOfWarningsLogged(void); + +/** + * Reset number of errors and warnings that have been logged to 0. + */ +void FIRResetNumberOfIssuesLogged(void); + +/** * Checks if the specified logger level is loggable given the current settings. * (required) log level (one of the FIRLoggerLevel enum values). * (required) whether or not this function is called from the Analytics component. |