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