added iOS source code
[wl-app.git] / iOS / Pods / FirebaseCore / Firebase / Core / Private / FIRLogger.h
1 /*
2  * Copyright 2017 Google
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 #import <Foundation/Foundation.h>
18
19 #import "FIRLoggerLevel.h"
20
21 NS_ASSUME_NONNULL_BEGIN
22
23 /**
24  * The Firebase services used in Firebase logger.
25  */
26 typedef NSString *const FIRLoggerService;
27
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;
45
46 /**
47  * The key used to store the logger's error count.
48  */
49 extern NSString *const kFIRLoggerErrorCountKey;
50
51 /**
52  * The key used to store the logger's warning count.
53  */
54 extern NSString *const kFIRLoggerWarningCountKey;
55
56 #ifdef __cplusplus
57 extern "C" {
58 #endif  // __cplusplus
59
60 /**
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.
65  */
66 void FIRSetAnalyticsDebugMode(BOOL analyticsDebugMode);
67
68 /**
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).
72  */
73 void FIRSetLoggerLevel(FIRLoggerLevel loggerLevel);
74
75 /**
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.
79  */
80 BOOL FIRIsLoggableLevel(FIRLoggerLevel loggerLevel, BOOL analyticsComponent);
81
82 /**
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
89  *            within the service.
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
93  *            string.
94  */
95 extern void FIRLogBasic(FIRLoggerLevel level,
96                         FIRLoggerService service,
97                         NSString *messageCode,
98                         NSString *message,
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
102                         va_list args_ptr
103 #else
104                         va_list _Nullable args_ptr
105 #endif
106 );
107
108 /**
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.
118  * Example usage:
119  * FIRLogError(kFIRLoggerCore, @"I-COR000001", @"Configuration of %@ failed.", app.name);
120  */
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);
131
132 #ifdef __cplusplus
133 }  // extern "C"
134 #endif  // __cplusplus
135
136 @interface FIRLoggerWrapper : NSObject
137
138 /**
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
148  *            string.
149  */
150
151 + (void)logWithLevel:(FIRLoggerLevel)level
152          withService:(FIRLoggerService)service
153             withCode:(NSString *)messageCode
154          withMessage:(NSString *)message
155             withArgs:(va_list)args;
156
157 @end
158
159 NS_ASSUME_NONNULL_END