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/interface/logcat_trace_context.h" 12 13#include <android/log.h> 14#include <assert.h> 15 16#include "webrtc/system_wrappers/interface/logging.h" 17 18namespace webrtc { 19 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 44LogcatTraceContext::LogcatTraceContext() { 45 webrtc::Trace::CreateTrace(); 46 if (webrtc::Trace::SetTraceCallback(this) != 0) 47 assert(false); 48} 49 50LogcatTraceContext::~LogcatTraceContext() { 51 if (webrtc::Trace::SetTraceCallback(NULL) != 0) 52 assert(false); 53 webrtc::Trace::ReturnTrace(); 54} 55 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