diff --git a/FirebaseCore/Sources/FIRConfiguration.m b/FirebaseCore/Sources/FIRConfiguration.m index 83b3248c377..8a646bdd67e 100644 --- a/FirebaseCore/Sources/FIRConfiguration.m +++ b/FirebaseCore/Sources/FIRConfiguration.m @@ -17,6 +17,7 @@ #import "FirebaseCore/Sources/FIRAnalyticsConfiguration.h" extern void FIRSetLoggerLevel(FIRLoggerLevel loggerLevel); +extern FIRLoggerLevel FIRGetLoggerLevel(void); @implementation FIRConfiguration @@ -40,7 +41,15 @@ - (instancetype)init { - (void)setLoggerLevel:(FIRLoggerLevel)loggerLevel { NSAssert(loggerLevel <= FIRLoggerLevelMax && loggerLevel >= FIRLoggerLevelMin, @"Invalid logger level, %ld", (long)loggerLevel); - FIRSetLoggerLevel(loggerLevel); + @synchronized(self) { + FIRSetLoggerLevel(loggerLevel); + } +} + +- (FIRLoggerLevel)loggerLevel { + @synchronized(self) { + return FIRGetLoggerLevel(); + } } @end diff --git a/FirebaseCore/Sources/FIRLogger.m b/FirebaseCore/Sources/FIRLogger.m index 17f54a9dbd1..9ec89996660 100644 --- a/FirebaseCore/Sources/FIRLogger.m +++ b/FirebaseCore/Sources/FIRLogger.m @@ -87,6 +87,7 @@ void FIRLoggerInitialize(void) { } FIRLoggerLevel FIRGetLoggerLevel(void) { + FIRLoggerInitialize(); return (FIRLoggerLevel)GULGetLoggerLevel(); } diff --git a/FirebaseCore/Sources/Public/FirebaseCore/FIRConfiguration.h b/FirebaseCore/Sources/Public/FirebaseCore/FIRConfiguration.h index 408bcadb75f..e6c1f1d8545 100644 --- a/FirebaseCore/Sources/Public/FirebaseCore/FIRConfiguration.h +++ b/FirebaseCore/Sources/Public/FirebaseCore/FIRConfiguration.h @@ -40,6 +40,9 @@ NS_SWIFT_NAME(FirebaseConfiguration) */ - (void)setLoggerLevel:(FIRLoggerLevel)loggerLevel; +/// Returns the logging level for internal Firebase logging. +- (FIRLoggerLevel)loggerLevel; + @end NS_ASSUME_NONNULL_END diff --git a/FirebaseCore/Tests/Unit/FIRConfigurationTest.m b/FirebaseCore/Tests/Unit/FIRConfigurationTest.m index 9267a63b6be..03bd70ae508 100644 --- a/FirebaseCore/Tests/Unit/FIRConfigurationTest.m +++ b/FirebaseCore/Tests/Unit/FIRConfigurationTest.m @@ -28,4 +28,18 @@ - (void)testSharedInstance { XCTAssertNotNil(config.analyticsConfiguration); } +- (void)testGetDefaultLevel { + FIRConfiguration *config = [FIRConfiguration sharedInstance]; + FIRLoggerLevel defaultLevel = [config loggerLevel]; + XCTAssertEqual(defaultLevel, FIRLoggerLevelNotice); +} + +- (void)testSetAndGet { + FIRConfiguration *config = [FIRConfiguration sharedInstance]; + for (FIRLoggerLevel level = FIRLoggerLevelMin; level <= FIRLoggerLevelMax; level++) { + [config setLoggerLevel:level]; + XCTAssertEqual([config loggerLevel], level); + } +} + @end