Skip to content

Commit 71972ab

Browse files
authored
[Firebase 10] Revamp FIRLogger for Swift use (#10286)
* [Firebase 10] Revamp FIRLogger for Swift use * Fix test impl and only run firebasepod.yml * re-enable actions * Implement logger * Global TAP * Revert .pbxproj * Call directly to GULs * Review * Undo API breaks * [skip ci] Avoid NS_SWIFT_NAME due to macro collisions This fixes the warning that broke the Auth x watchOS job. * [skip ci] Revert Gemfile
1 parent c11d3a8 commit 71972ab

File tree

4 files changed

+48
-33
lines changed

4 files changed

+48
-33
lines changed

FirebaseCore/Extension/FIRLogger.h

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -147,27 +147,42 @@ extern void FIRLogWarningSwift(FIRLoggerService service, NSString *messageCode,
147147
} // extern "C"
148148
#endif // __cplusplus
149149

150+
NS_SWIFT_NAME(FirebaseLogger)
150151
@interface FIRLoggerWrapper : NSObject
151152

152-
/**
153-
* Objective-C wrapper for FirebaseLogBasic to allow weak linking to FirebaseLogger
154-
* (required) log level (one of the FirebaseLoggerLevel enum values).
155-
* (required) service name of type FirebaseLoggerService.
156-
* (required) message code starting with "I-" which means iOS, followed by a capitalized
157-
* three-character service identifier and a six digit integer message ID that is unique
158-
* within the service.
159-
* An example of the message code is @"I-COR000001".
160-
* (required) message string which can be a format string.
161-
* (optional) variable arguments list obtained from calling va_start, used when message is a format
162-
* string.
163-
*/
164-
153+
/// Logs a given message at a given log level. This API is effectively a wrapper for the
154+
/// `FIRLogBasic` C API.
155+
///
156+
/// - Parameters:
157+
/// - level: The log level to use (defined by `FirebaseLoggerLevel` enum values).
158+
/// - service: The service name of type `FirebaseLoggerService`.
159+
/// - code: The mesage code. Starting with "I-" which means iOS, followed by a capitalized
160+
/// three-character service identifier and a six digit integer message ID that is unique within
161+
/// the service. An example of the message code is @"I-COR000001".
162+
/// - message: Formatted string to be used as the log's message.
163+
/// - args: Arguments list obtained from calling `va_start`, used when message is a format string.
165164
+ (void)logWithLevel:(FIRLoggerLevel)level
166165
withService:(FIRLoggerService)service
167166
withCode:(NSString *)messageCode
168167
withMessage:(NSString *)message
169168
withArgs:(va_list)args;
170169

170+
/// Logs a given message at a given log level.
171+
///
172+
/// - Parameters:
173+
/// - level: The log level to use (defined by `FirebaseLoggerLevel` enum values).
174+
/// - service: The service name of type `FirebaseLoggerService`.
175+
/// - code: The mesage code. Starting with "I-" which means iOS, followed by a capitalized
176+
/// three-character service identifier and a six digit integer message ID that is unique within
177+
/// the service. An example of the message code is @"I-COR000001".
178+
/// - message: Formatted string to be used as the log's message.
179+
/// - args: Arguments list obtained from calling `va_start`, used when message is a format string.
180+
+ (void)logWithLevel:(FIRLoggerLevel)level
181+
service:(FIRLoggerService)service
182+
code:(NSString *)code
183+
message:(NSString *)message
184+
__attribute__((__swift_name__("log(level:service:code:message:)")));
185+
171186
@end
172187

173188
NS_ASSUME_NONNULL_END

FirebaseCore/Sources/FIRLogger.m

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -157,15 +157,6 @@ void FIRLogBasic(FIRLoggerLevel level,
157157
FIR_LOGGING_FUNCTION(Info)
158158
FIR_LOGGING_FUNCTION(Debug)
159159

160-
// Swift does not support variadic function calls
161-
void FIRLogDebugSwift(FIRLoggerService service, NSString *messageCode, NSString *message) {
162-
FIRLogDebug(service, messageCode, @"%@", message);
163-
}
164-
165-
void FIRLogWarningSwift(FIRLoggerService service, NSString *messageCode, NSString *message) {
166-
FIRLogWarning(service, messageCode, @"%@", message);
167-
}
168-
169160
#undef FIR_MAKE_LOGGER
170161

171162
#pragma mark - FIRLoggerWrapper
@@ -180,4 +171,11 @@ + (void)logWithLevel:(FIRLoggerLevel)level
180171
FIRLogBasic(level, service, messageCode, message, args);
181172
}
182173

174+
+ (void)logWithLevel:(FIRLoggerLevel)level
175+
service:(FIRLoggerService)service
176+
code:(NSString *)code
177+
message:(NSString *)message {
178+
FIRLogBasic(level, service, code, message, NULL);
179+
}
180+
183181
@end

FirebaseStorage/Sources/Internal/StorageTokenAuthorizer.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,11 @@ internal class StorageTokenAuthorizer: NSObject, GTMSessionFetcherAuthorizer {
6464
request?.setValue(tokenResult.token, forHTTPHeaderField: "X-Firebase-AppCheck")
6565

6666
if let error = tokenResult.error {
67-
FIRLogDebugSwift(
68-
"[FirebaseStorage]",
69-
"I-STR000001",
70-
"Failed to fetch AppCheck token. Error: \(error)"
67+
FirebaseLogger.log(
68+
level: .debug,
69+
service: "[FirebaseStorage]",
70+
code: "I-STR000001",
71+
message: "Failed to fetch AppCheck token. Error: \(error)"
7172
)
7273
}
7374
fetchTokenGroup.leave()

Firestore/Swift/Source/Codable/DocumentID.swift

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public struct DocumentID<Value: DocumentIDWrappable & Codable>:
109109

110110
public init(wrappedValue value: Value?) {
111111
if let value = value {
112-
logWarning(for: value)
112+
logIgnoredValueWarning(value: value)
113113
}
114114
self.value = value
115115
}
@@ -118,17 +118,18 @@ public struct DocumentID<Value: DocumentIDWrappable & Codable>:
118118
get { value }
119119
set {
120120
if let someNewValue = newValue {
121-
logWarning(for: someNewValue)
121+
logIgnoredValueWarning(value: someNewValue)
122122
}
123123
value = newValue
124124
}
125125
}
126126

127-
private func logWarning(for value: Value) {
128-
FIRLogWarningSwift(
129-
"[FirebaseFirestoreSwift]",
130-
"I-FST000002",
131-
"""
127+
private func logIgnoredValueWarning(value: Value) {
128+
FirebaseLogger.log(
129+
level: .warning,
130+
service: "[FirebaseFirestoreSwift]",
131+
code: "I-FST000002",
132+
message: """
132133
Attempting to initialize or set a @DocumentID property with a non-nil
133134
value: \(value). The document ID is managed by Firestore and any
134135
initialized or set value will be ignored. The ID is automatically set

0 commit comments

Comments
 (0)