1 /* 2 * Copyright (c) 2013 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 #include "webrtc/system_wrappers/include/logcat_trace_context.h" 12 13 #include <android/log.h> 14 #include <assert.h> 15 16 #include "webrtc/system_wrappers/include/logging.h" 17 18 namespace webrtc { 19 AndroidLogPriorityFromWebRtcLogLevel(TraceLevel webrtc_level)20static android_LogPriority AndroidLogPriorityFromWebRtcLogLevel( 21 TraceLevel webrtc_level) { 22 // NOTE: this mapping is somewhat arbitrary. StateInfo and Info are mapped 23 // to DEBUG because they are highly verbose in webrtc code (which is 24 // unfortunate). 25 switch (webrtc_level) { 26 case webrtc::kTraceStateInfo: return ANDROID_LOG_DEBUG; 27 case webrtc::kTraceWarning: return ANDROID_LOG_WARN; 28 case webrtc::kTraceError: return ANDROID_LOG_ERROR; 29 case webrtc::kTraceCritical: return ANDROID_LOG_FATAL; 30 case webrtc::kTraceApiCall: return ANDROID_LOG_VERBOSE; 31 case webrtc::kTraceModuleCall: return ANDROID_LOG_VERBOSE; 32 case webrtc::kTraceMemory: return ANDROID_LOG_VERBOSE; 33 case webrtc::kTraceTimer: return ANDROID_LOG_VERBOSE; 34 case webrtc::kTraceStream: return ANDROID_LOG_VERBOSE; 35 case webrtc::kTraceDebug: return ANDROID_LOG_DEBUG; 36 case webrtc::kTraceInfo: return ANDROID_LOG_DEBUG; 37 case webrtc::kTraceTerseInfo: return ANDROID_LOG_INFO; 38 default: 39 LOG(LS_ERROR) << "Unexpected log level" << webrtc_level; 40 return ANDROID_LOG_FATAL; 41 } 42 } 43 LogcatTraceContext()44LogcatTraceContext::LogcatTraceContext() { 45 webrtc::Trace::CreateTrace(); 46 if (webrtc::Trace::SetTraceCallback(this) != 0) 47 assert(false); 48 } 49 ~LogcatTraceContext()50LogcatTraceContext::~LogcatTraceContext() { 51 if (webrtc::Trace::SetTraceCallback(NULL) != 0) 52 assert(false); 53 webrtc::Trace::ReturnTrace(); 54 } 55 Print(TraceLevel level,const char * message,int length)56void LogcatTraceContext::Print(TraceLevel level, 57 const char* message, 58 int length) { 59 __android_log_print(AndroidLogPriorityFromWebRtcLogLevel(level), 60 "WEBRTC", "%.*s", length, message); 61 } 62 63 } // namespace webrtc 64