aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firebase/Core
diff options
context:
space:
mode:
authorGravatar Ryan Wilson <wilsonryan@google.com>2018-04-25 09:45:36 -0400
committerGravatar Paul Beusterien <paulbeusterien@google.com>2018-04-25 06:45:36 -0700
commit260557691fae8ba34e262f480c632ab63b5133ee (patch)
tree7591bc9023e9c42e8a348758171a4fa41ed0cf19 /Firebase/Core
parent98d665b7927da3c30f86919ca810f9f6fa6a354e (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.m33
-rw-r--r--Firebase/Core/Private/FIRLogger.h25
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.