lpw
2021-01-26 454098c2f508505fc55c60c577250b8610abaaf3
commit | author | age
a6c014 1 /*
L 2  * Copyright 2018 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 /** The current logging level. This value and higher will be printed. Declared as volatile to make
20  * getting and setting atomic.
21  */
22 FOUNDATION_EXPORT volatile NSInteger GDTCORConsoleLoggerLoggingLevel;
23
24 /** A  list of logging levels that GDT supports. */
25 typedef NS_ENUM(NSInteger, GDTCORLoggingLevel) {
26
27   /** Causes all logs to be printed. */
28   GDTCORLoggingLevelDebug = 1,
29
30   /** Causes all non-debug logs to be printed. */
31   GDTCORLoggingLevelVerbose = 2,
32
33   /** Causes warnings and errors to be printed. */
34   GDTCORLoggingLevelWarnings = 3,
35
36   /** Causes errors to be printed. This is the default value. */
37   GDTCORLoggingLevelErrors = 4
38 };
39
40 /** A list of message codes to print in the logger that help to correspond printed messages with
41  * code locations.
42  *
43  * Prefixes:
44  * - MCD => MessageCodeDebug
45  * - MCW => MessageCodeWarning
46  * - MCE => MessageCodeError
47  */
48 typedef NS_ENUM(NSInteger, GDTCORMessageCode) {
49
50   /** For debug logs. */
51   GDTCORMCDDebugLog = 0,
52
53   /** For warning messages concerning transportBytes: not being implemented by a data object. */
54   GDTCORMCWDataObjectMissingBytesImpl = 1,
55
56   /** For warning messages concerning a failed event upload. */
57   GDTCORMCWUploadFailed = 2,
58
59   /** For warning messages concerning a forced event upload. */
60   GDTCORMCWForcedUpload = 3,
61
62   /** For warning messages concerning a failed reachability call. */
63   GDTCORMCWReachabilityFailed = 4,
64
65   /** For warning messages concerning a database warning. */
66   GDTCORMCWDatabaseWarning = 5,
67
68   /** For warning messages concerning the reading of a event file. */
69   GDTCORMCWFileReadError = 6,
70
71   /** For error messages concerning transform: not being implemented by an event transformer. */
72   GDTCORMCETransformerDoesntImplementTransform = 1000,
73
74   /** For error messages concerning the creation of a directory failing. */
75   GDTCORMCEDirectoryCreationError = 1001,
76
77   /** For error messages concerning the writing of a event file. */
78   GDTCORMCEFileWriteError = 1002,
79
80   /** For error messages concerning the lack of a prioritizer for a given backend. */
81   GDTCORMCEPrioritizerError = 1003,
82
83   /** For error messages concerning a package delivery API violation. */
84   GDTCORMCEDeliverTwice = 1004,
85
86   /** For error messages concerning an error in an implementation of -transportBytes. */
87   GDTCORMCETransportBytesError = 1005,
88
89   /** For general purpose error messages in a dependency. */
90   GDTCORMCEGeneralError = 1006,
91
92   /** For fatal errors. Please go to https://github.com/firebase/firebase-ios-sdk/issues and open
93    * an issue if you encounter an error with this code.
94    */
95   GDTCORMCEFatalAssertion = 1007,
96
97   /** For error messages concerning the reading of a event file. */
98   GDTCORMCEFileReadError = 1008,
99
100   /** For errors related to running sqlite. */
101   GDTCORMCEDatabaseError = 1009,
102 };
103
104 /** Prints the given code and format string to the console.
105  *
106  * @param code The message code describing the nature of the log.
107  * @param logLevel The log level of this log.
108  * @param format The format string.
109  */
110 FOUNDATION_EXPORT
111 void GDTCORLog(GDTCORMessageCode code, GDTCORLoggingLevel logLevel, NSString *_Nonnull format, ...)
112     NS_FORMAT_FUNCTION(3, 4);
113
114 /** Prints an assert log to the console.
115  *
116  * @param wasFatal Send YES if the assertion should be fatal, NO otherwise.
117  * @param file The file in which the failure occurred.
118  * @param line The line number of the failure.
119  * @param format The format string.
120  */
121 FOUNDATION_EXPORT void GDTCORLogAssert(BOOL wasFatal,
122                                        NSString *_Nonnull file,
123                                        NSInteger line,
124                                        NSString *_Nullable format,
125                                        ...) NS_FORMAT_FUNCTION(4, 5);
126
127 /** Returns the string that represents some message code.
128  *
129  * @param code The code to convert to a string.
130  * @return The string representing the message code.
131  */
132 FOUNDATION_EXPORT NSString *_Nonnull GDTCORMessageCodeEnumToString(GDTCORMessageCode code);
133
134 #define GDTCORLogDebug(MESSAGE_FORMAT, ...) \
135   GDTCORLog(GDTCORMCDDebugLog, GDTCORLoggingLevelDebug, MESSAGE_FORMAT, __VA_ARGS__);
136
137 // A define to wrap GULLogWarning with slightly more convenient usage.
138 #define GDTCORLogWarning(MESSAGE_CODE, MESSAGE_FORMAT, ...) \
139   GDTCORLog(MESSAGE_CODE, GDTCORLoggingLevelWarnings, MESSAGE_FORMAT, __VA_ARGS__);
140
141 // A define to wrap GULLogError with slightly more convenient usage and a failing assert.
142 #define GDTCORLogError(MESSAGE_CODE, MESSAGE_FORMAT, ...) \
143   GDTCORLog(MESSAGE_CODE, GDTCORLoggingLevelErrors, MESSAGE_FORMAT, __VA_ARGS__);