blob: da1c1a57d8a75f39362bdeda88b45d90c6025135 [file] [log] [blame]
andrew@webrtc.org50419b02012-11-14 19:07:54 +00001/*
2 * Copyright (c) 2012 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/logging.h"
12
13#include <string.h>
pbos@webrtc.orgacaf3a12013-05-27 15:07:45 +000014
andrew@webrtc.orgc3e5d342012-11-23 19:30:59 +000015#include <sstream>
andrew@webrtc.org50419b02012-11-14 19:07:54 +000016
17#include "webrtc/common_types.h"
18#include "webrtc/system_wrappers/interface/trace.h"
19
20namespace webrtc {
andrew@webrtc.orgc3e5d342012-11-23 19:30:59 +000021namespace {
andrew@webrtc.org50419b02012-11-14 19:07:54 +000022
andrew@webrtc.orgc3e5d342012-11-23 19:30:59 +000023TraceLevel WebRtcSeverity(LoggingSeverity sev) {
andrew@webrtc.org50419b02012-11-14 19:07:54 +000024 switch (sev) {
andrew@webrtc.org90805182013-09-05 16:40:43 +000025 // TODO(ajm): SENSITIVE doesn't have a corresponding webrtc level.
andrew@webrtc.org50419b02012-11-14 19:07:54 +000026 case LS_SENSITIVE: return kTraceInfo;
andrew@webrtc.org655d8f52012-11-20 07:34:45 +000027 case LS_VERBOSE: return kTraceInfo;
28 case LS_INFO: return kTraceTerseInfo;
andrew@webrtc.org50419b02012-11-14 19:07:54 +000029 case LS_WARNING: return kTraceWarning;
30 case LS_ERROR: return kTraceError;
31 default: return kTraceNone;
32 }
33}
34
andrew@webrtc.orgc3e5d342012-11-23 19:30:59 +000035const char* DescribeFile(const char* file) {
36 const char* end1 = ::strrchr(file, '/');
37 const char* end2 = ::strrchr(file, '\\');
38 if (!end1 && !end2)
39 return file;
40 else
41 return (end1 > end2) ? end1 + 1 : end2 + 1;
42}
43
44} // namespace
45
andrew@webrtc.org50419b02012-11-14 19:07:54 +000046LogMessage::LogMessage(const char* file, int line, LoggingSeverity sev)
47 : severity_(sev) {
48 print_stream_ << "(" << DescribeFile(file) << ":" << line << "): ";
49}
50
andrew@webrtc.org90805182013-09-05 16:40:43 +000051bool LogMessage::Loggable(LoggingSeverity sev) {
52 // |level_filter| is a bitmask, unlike libjingle's minimum severity value.
53 return WebRtcSeverity(sev) & Trace::level_filter() ? true : false;
54}
55
andrew@webrtc.org50419b02012-11-14 19:07:54 +000056LogMessage::~LogMessage() {
57 const std::string& str = print_stream_.str();
pbos@webrtc.orgc86ec3e2014-10-27 09:22:03 +000058 Trace::Add(WebRtcSeverity(severity_), kTraceUndefined, 0, "%s", str.c_str());
andrew@webrtc.org50419b02012-11-14 19:07:54 +000059}
60
andrew@webrtc.org50419b02012-11-14 19:07:54 +000061} // namespace webrtc