blob: 6b50d6acf8ce77afcc2d3a70b1fba52f8e2e3644 [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
Henrik Kjellander98f53512015-10-28 18:17:40 +010011#include "webrtc/system_wrappers/include/logging.h"
andrew@webrtc.org50419b02012-11-14 19:07:54 +000012
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"
Henrik Kjellander98f53512015-10-28 18:17:40 +010018#include "webrtc/system_wrappers/include/trace.h"
andrew@webrtc.org50419b02012-11-14 19:07:54 +000019
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
andrew88703d72015-09-07 00:34:56 -070035// Return the filename portion of the string (that following the last slash).
36const char* FilenameFromPath(const char* file) {
andrew@webrtc.orgc3e5d342012-11-23 19:30:59 +000037 const char* end1 = ::strrchr(file, '/');
38 const char* end2 = ::strrchr(file, '\\');
39 if (!end1 && !end2)
40 return file;
41 else
42 return (end1 > end2) ? end1 + 1 : end2 + 1;
43}
44
45} // namespace
46
andrew@webrtc.org50419b02012-11-14 19:07:54 +000047LogMessage::LogMessage(const char* file, int line, LoggingSeverity sev)
48 : severity_(sev) {
andrew88703d72015-09-07 00:34:56 -070049 print_stream_ << "(" << FilenameFromPath(file) << ":" << line << "): ";
andrew@webrtc.org50419b02012-11-14 19:07:54 +000050}
51
andrew@webrtc.org90805182013-09-05 16:40:43 +000052bool LogMessage::Loggable(LoggingSeverity sev) {
53 // |level_filter| is a bitmask, unlike libjingle's minimum severity value.
54 return WebRtcSeverity(sev) & Trace::level_filter() ? true : false;
55}
56
andrew@webrtc.org50419b02012-11-14 19:07:54 +000057LogMessage::~LogMessage() {
58 const std::string& str = print_stream_.str();
pbos@webrtc.orgc86ec3e2014-10-27 09:22:03 +000059 Trace::Add(WebRtcSeverity(severity_), kTraceUndefined, 0, "%s", str.c_str());
andrew@webrtc.org50419b02012-11-14 19:07:54 +000060}
61
andrew@webrtc.org50419b02012-11-14 19:07:54 +000062} // namespace webrtc