| /* |
| * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #include "webrtc/system_wrappers/include/logcat_trace_context.h" |
| |
| #include <android/log.h> |
| #include <assert.h> |
| |
| #include "webrtc/rtc_base/logging.h" |
| |
| namespace webrtc { |
| |
| static android_LogPriority AndroidLogPriorityFromWebRtcLogLevel( |
| TraceLevel webrtc_level) { |
| // NOTE: this mapping is somewhat arbitrary. StateInfo and Info are mapped |
| // to DEBUG because they are highly verbose in webrtc code (which is |
| // unfortunate). |
| switch (webrtc_level) { |
| case webrtc::kTraceStateInfo: return ANDROID_LOG_DEBUG; |
| case webrtc::kTraceWarning: return ANDROID_LOG_WARN; |
| case webrtc::kTraceError: return ANDROID_LOG_ERROR; |
| case webrtc::kTraceCritical: return ANDROID_LOG_FATAL; |
| case webrtc::kTraceApiCall: return ANDROID_LOG_VERBOSE; |
| case webrtc::kTraceModuleCall: return ANDROID_LOG_VERBOSE; |
| case webrtc::kTraceMemory: return ANDROID_LOG_VERBOSE; |
| case webrtc::kTraceTimer: return ANDROID_LOG_VERBOSE; |
| case webrtc::kTraceStream: return ANDROID_LOG_VERBOSE; |
| case webrtc::kTraceDebug: return ANDROID_LOG_DEBUG; |
| case webrtc::kTraceInfo: return ANDROID_LOG_DEBUG; |
| case webrtc::kTraceTerseInfo: return ANDROID_LOG_INFO; |
| default: |
| LOG(LS_ERROR) << "Unexpected log level" << webrtc_level; |
| return ANDROID_LOG_FATAL; |
| } |
| } |
| |
| LogcatTraceContext::LogcatTraceContext() { |
| webrtc::Trace::CreateTrace(); |
| if (webrtc::Trace::SetTraceCallback(this) != 0) |
| assert(false); |
| } |
| |
| LogcatTraceContext::~LogcatTraceContext() { |
| if (webrtc::Trace::SetTraceCallback(NULL) != 0) |
| assert(false); |
| webrtc::Trace::ReturnTrace(); |
| } |
| |
| void LogcatTraceContext::Print(TraceLevel level, |
| const char* message, |
| int length) { |
| __android_log_print(AndroidLogPriorityFromWebRtcLogLevel(level), |
| "WEBRTC", "%.*s", length, message); |
| } |
| |
| } // namespace webrtc |