1 /*
2  *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #import <Foundation/Foundation.h>
12 
13 #import "RTCMacros.h"
14 
15 // Subset of rtc::LoggingSeverity.
16 typedef NS_ENUM(NSInteger, RTCLoggingSeverity) {
17   RTCLoggingSeverityVerbose,
18   RTCLoggingSeverityInfo,
19   RTCLoggingSeverityWarning,
20   RTCLoggingSeverityError,
21   RTCLoggingSeverityNone,
22 };
23 
24 // Wrapper for C++ RTC_LOG(sev) macros.
25 // Logs the log string to the webrtc logstream for the given severity.
26 RTC_EXTERN void RTCLogEx(RTCLoggingSeverity severity, NSString* log_string);
27 
28 // Wrapper for rtc::LogMessage::LogToDebug.
29 // Sets the minimum severity to be logged to console.
30 RTC_EXTERN void RTCSetMinDebugLogLevel(RTCLoggingSeverity severity);
31 
32 // Returns the filename with the path prefix removed.
33 RTC_EXTERN NSString* RTCFileName(const char* filePath);
34 
35 // Some convenience macros.
36 
37 #define RTCLogString(format, ...)                                           \
38   [NSString stringWithFormat:@"(%@:%d %s): " format, RTCFileName(__FILE__), \
39                              __LINE__, __FUNCTION__, ##__VA_ARGS__]
40 
41 #define RTCLogFormat(severity, format, ...)                     \
42   do {                                                          \
43     NSString* log_string = RTCLogString(format, ##__VA_ARGS__); \
44     RTCLogEx(severity, log_string);                             \
45   } while (false)
46 
47 #define RTCLogVerbose(format, ...) \
48   RTCLogFormat(RTCLoggingSeverityVerbose, format, ##__VA_ARGS__)
49 
50 #define RTCLogInfo(format, ...) \
51   RTCLogFormat(RTCLoggingSeverityInfo, format, ##__VA_ARGS__)
52 
53 #define RTCLogWarning(format, ...) \
54   RTCLogFormat(RTCLoggingSeverityWarning, format, ##__VA_ARGS__)
55 
56 #define RTCLogError(format, ...) \
57   RTCLogFormat(RTCLoggingSeverityError, format, ##__VA_ARGS__)
58 
59 #if !defined(NDEBUG)
60 #define RTCLogDebug(format, ...) RTCLogInfo(format, ##__VA_ARGS__)
61 #else
62 #define RTCLogDebug(format, ...) \
63   do {                           \
64   } while (false)
65 #endif
66 
67 #define RTCLog(format, ...) RTCLogInfo(format, ##__VA_ARGS__)
68