Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / system_wrappers / source / logging.cc
1 /*
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>
14
15 #include <sstream>
16
17 #include "webrtc/common_types.h"
18 #include "webrtc/system_wrappers/interface/trace.h"
19
20 namespace webrtc {
21 namespace {
22
23 TraceLevel WebRtcSeverity(LoggingSeverity sev) {
24   switch (sev) {
25     // TODO(ajm): SENSITIVE doesn't have a corresponding webrtc level.
26     case LS_SENSITIVE:  return kTraceInfo;
27     case LS_VERBOSE:    return kTraceInfo;
28     case LS_INFO:       return kTraceTerseInfo;
29     case LS_WARNING:    return kTraceWarning;
30     case LS_ERROR:      return kTraceError;
31     default:            return kTraceNone;
32   }
33 }
34
35 const 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
46 LogMessage::LogMessage(const char* file, int line, LoggingSeverity sev)
47     : severity_(sev) {
48   print_stream_ << "(" << DescribeFile(file) << ":" << line << "): ";
49 }
50
51 bool 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
56 LogMessage::~LogMessage() {
57   const std::string& str = print_stream_.str();
58   Trace::Add(WebRtcSeverity(severity_), kTraceUndefined, 0, "%s", str.c_str());
59 }
60
61 }  // namespace webrtc