blob: 7ad1b1dedd01977e39338e9d0acecf7fec7895c4 [file] [log] [blame]
fischman@webrtc.org7e4d0df2013-10-01 02:40:43 +00001/*
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
Henrik Kjellander98f53512015-10-28 18:17:40 +010011#include "webrtc/system_wrappers/include/logcat_trace_context.h"
fischman@webrtc.org7e4d0df2013-10-01 02:40:43 +000012
13#include <android/log.h>
14#include <assert.h>
15
Edward Lemurc20978e2017-07-06 19:44:34 +020016#include "webrtc/rtc_base/logging.h"
fischman@webrtc.org7e4d0df2013-10-01 02:40:43 +000017
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