2 * Copyright 2017 Google
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #import <Foundation/Foundation.h>
19 #import "FIRLoggerLevel.h"
21 NS_ASSUME_NONNULL_BEGIN
24 * The Firebase services used in Firebase logger.
26 typedef NSString *const FIRLoggerService;
28 extern FIRLoggerService kFIRLoggerABTesting;
29 extern FIRLoggerService kFIRLoggerAdMob;
30 extern FIRLoggerService kFIRLoggerAnalytics;
31 extern FIRLoggerService kFIRLoggerAuth;
32 extern FIRLoggerService kFIRLoggerCore;
33 extern FIRLoggerService kFIRLoggerCrash;
34 extern FIRLoggerService kFIRLoggerDatabase;
35 extern FIRLoggerService kFIRLoggerDynamicLinks;
36 extern FIRLoggerService kFIRLoggerFirestore;
37 extern FIRLoggerService kFIRLoggerInstanceID;
38 extern FIRLoggerService kFIRLoggerInvites;
39 extern FIRLoggerService kFIRLoggerMLKit;
40 extern FIRLoggerService kFIRLoggerMessaging;
41 extern FIRLoggerService kFIRLoggerPerf;
42 extern FIRLoggerService kFIRLoggerRemoteConfig;
43 extern FIRLoggerService kFIRLoggerStorage;
44 extern FIRLoggerService kFIRLoggerSwizzler;
47 * The key used to store the logger's error count.
49 extern NSString *const kFIRLoggerErrorCountKey;
52 * The key used to store the logger's warning count.
54 extern NSString *const kFIRLoggerWarningCountKey;
61 * Enables or disables Analytics debug mode.
62 * If set to YES, the logging level for Analytics will be set to FIRLoggerLevelDebug.
63 * Enabling the debug mode has no effect if the app is running from App Store.
64 * (required) analytics debug mode flag.
66 void FIRSetAnalyticsDebugMode(BOOL analyticsDebugMode);
69 * Changes the default logging level of FIRLoggerLevelNotice to a user-specified level.
70 * The default level cannot be set above FIRLoggerLevelNotice if the app is running from App Store.
71 * (required) log level (one of the FIRLoggerLevel enum values).
73 void FIRSetLoggerLevel(FIRLoggerLevel loggerLevel);
76 * Checks if the specified logger level is loggable given the current settings.
77 * (required) log level (one of the FIRLoggerLevel enum values).
78 * (required) whether or not this function is called from the Analytics component.
80 BOOL FIRIsLoggableLevel(FIRLoggerLevel loggerLevel, BOOL analyticsComponent);
83 * Logs a message to the Xcode console and the device log. If running from AppStore, will
84 * not log any messages with a level higher than FIRLoggerLevelNotice to avoid log spamming.
85 * (required) log level (one of the FIRLoggerLevel enum values).
86 * (required) service name of type FIRLoggerService.
87 * (required) message code starting with "I-" which means iOS, followed by a capitalized
88 * three-character service identifier and a six digit integer message ID that is unique
90 * An example of the message code is @"I-COR000001".
91 * (required) message string which can be a format string.
92 * (optional) variable arguments list obtained from calling va_start, used when message is a format
95 extern void FIRLogBasic(FIRLoggerLevel level,
96 FIRLoggerService service,
97 NSString *messageCode,
99 // On 64-bit simulators, va_list is not a pointer, so cannot be marked nullable
100 // See: http://stackoverflow.com/q/29095469
101 #if __LP64__ && TARGET_OS_SIMULATOR || TARGET_OS_OSX
104 va_list _Nullable args_ptr
109 * The following functions accept the following parameters in order:
110 * (required) service name of type FIRLoggerService.
111 * (required) message code starting from "I-" which means iOS, followed by a capitalized
112 * three-character service identifier and a six digit integer message ID that is unique
113 * within the service.
114 * An example of the message code is @"I-COR000001".
115 * See go/firebase-log-proposal for details.
116 * (required) message string which can be a format string.
117 * (optional) the list of arguments to substitute into the format string.
119 * FIRLogError(kFIRLoggerCore, @"I-COR000001", @"Configuration of %@ failed.", app.name);
121 extern void FIRLogError(FIRLoggerService service, NSString *messageCode, NSString *message, ...)
122 NS_FORMAT_FUNCTION(3, 4);
123 extern void FIRLogWarning(FIRLoggerService service, NSString *messageCode, NSString *message, ...)
124 NS_FORMAT_FUNCTION(3, 4);
125 extern void FIRLogNotice(FIRLoggerService service, NSString *messageCode, NSString *message, ...)
126 NS_FORMAT_FUNCTION(3, 4);
127 extern void FIRLogInfo(FIRLoggerService service, NSString *messageCode, NSString *message, ...)
128 NS_FORMAT_FUNCTION(3, 4);
129 extern void FIRLogDebug(FIRLoggerService service, NSString *messageCode, NSString *message, ...)
130 NS_FORMAT_FUNCTION(3, 4);
134 #endif // __cplusplus
136 @interface FIRLoggerWrapper : NSObject
139 * Objective-C wrapper for FIRLogBasic to allow weak linking to FIRLogger
140 * (required) log level (one of the FIRLoggerLevel enum values).
141 * (required) service name of type FIRLoggerService.
142 * (required) message code starting with "I-" which means iOS, followed by a capitalized
143 * three-character service identifier and a six digit integer message ID that is unique
144 * within the service.
145 * An example of the message code is @"I-COR000001".
146 * (required) message string which can be a format string.
147 * (optional) variable arguments list obtained from calling va_start, used when message is a format
151 + (void)logWithLevel:(FIRLoggerLevel)level
152 withService:(FIRLoggerService)service
153 withCode:(NSString *)messageCode
154 withMessage:(NSString *)message
155 withArgs:(va_list)args;
159 NS_ASSUME_NONNULL_END