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/include/logging.h"
     12 
     13 #include <string.h>
     14 
     15 #include <sstream>
     16 
     17 #include "webrtc/common_types.h"
     18 #include "webrtc/system_wrappers/include/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 // Return the filename portion of the string (that following the last slash).
     36 const char* FilenameFromPath(const char* file) {
     37   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 
     47 LogMessage::LogMessage(const char* file, int line, LoggingSeverity sev)
     48     : severity_(sev) {
     49   print_stream_ << "(" << FilenameFromPath(file) << ":" << line << "): ";
     50 }
     51 
     52 bool 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 
     57 LogMessage::~LogMessage() {
     58   const std::string& str = print_stream_.str();
     59   Trace::Add(WebRtcSeverity(severity_), kTraceUndefined, 0, "%s", str.c_str());
     60 }
     61 
     62 }  // namespace webrtc
     63