Home | History | Annotate | Download | only in source
      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, str.c_str());
     59 }
     60 
     61 }  // namespace webrtc
     62