1d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org/* 2d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org * 4d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org * Use of this source code is governed by a BSD-style license 5d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org * in the file PATENTS. All contributing project authors may 8d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org */ 10d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org 11d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org#include "webrtc/system_wrappers/interface/logging.h" 12d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org 13d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org#include <string.h> 14c6d6fed3c0a82bb7a09095381b974e8e5eebcb35pbos@webrtc.org 15804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.org#include <sstream> 16d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org 17d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org#include "webrtc/common_types.h" 18d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org#include "webrtc/system_wrappers/interface/trace.h" 19d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org 20d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.orgnamespace webrtc { 21804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.orgnamespace { 22d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org 23804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.orgTraceLevel WebRtcSeverity(LoggingSeverity sev) { 24d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org switch (sev) { 2506eaa5465d57f416c14bb3a587ba4146290d6a58andrew@webrtc.org // TODO(ajm): SENSITIVE doesn't have a corresponding webrtc level. 26d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org case LS_SENSITIVE: return kTraceInfo; 27bc687c51d87cbcc52ff13b29ea96062c593bb90bandrew@webrtc.org case LS_VERBOSE: return kTraceInfo; 28bc687c51d87cbcc52ff13b29ea96062c593bb90bandrew@webrtc.org case LS_INFO: return kTraceTerseInfo; 29d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org case LS_WARNING: return kTraceWarning; 30d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org case LS_ERROR: return kTraceError; 31d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org default: return kTraceNone; 32d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org } 33d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org} 34d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org 35804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.orgconst char* DescribeFile(const char* file) { 36804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.org const char* end1 = ::strrchr(file, '/'); 37804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.org const char* end2 = ::strrchr(file, '\\'); 38804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.org if (!end1 && !end2) 39804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.org return file; 40804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.org else 41804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.org return (end1 > end2) ? end1 + 1 : end2 + 1; 42804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.org} 43804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.org 44804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.org} // namespace 45804d5527f49d09d2b4d2f462532abd78c905bff7andrew@webrtc.org 46d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.orgLogMessage::LogMessage(const char* file, int line, LoggingSeverity sev) 47d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org : severity_(sev) { 48d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org print_stream_ << "(" << DescribeFile(file) << ":" << line << "): "; 49d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org} 50d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org 5106eaa5465d57f416c14bb3a587ba4146290d6a58andrew@webrtc.orgbool LogMessage::Loggable(LoggingSeverity sev) { 5206eaa5465d57f416c14bb3a587ba4146290d6a58andrew@webrtc.org // |level_filter| is a bitmask, unlike libjingle's minimum severity value. 5306eaa5465d57f416c14bb3a587ba4146290d6a58andrew@webrtc.org return WebRtcSeverity(sev) & Trace::level_filter() ? true : false; 5406eaa5465d57f416c14bb3a587ba4146290d6a58andrew@webrtc.org} 5506eaa5465d57f416c14bb3a587ba4146290d6a58andrew@webrtc.org 56d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.orgLogMessage::~LogMessage() { 57d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org const std::string& str = print_stream_.str(); 589705beb71497537569f82b7b0e3a0175c4214ed2andrew@webrtc.org Trace::Add(WebRtcSeverity(severity_), kTraceUndefined, 0, str.c_str()); 59d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org} 60d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org 61d898c019c4e09c73bc7354da9f1b54004f3e4b7eandrew@webrtc.org} // namespace webrtc 62