BUG=chromium:468375 TBR=kjellander@webrtc.org,ajm@webrtc.org Review URL: https://webrtc-codereview.appspot.com/51409004 Cr-Commit-Position: refs/heads/master@{#8786} git-svn-id: http://webrtc.googlecode.com/svn/trunk@8786 4adac7df-926f-26a2-2b94-8c16560cd09d
87 lines
3.3 KiB
C
87 lines
3.3 KiB
C
/*
|
|
* Copyright 2012 The WebRTC Project Authors. All rights reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
// This file overrides the logging macros in libjingle (webrtc/base/logging.h).
|
|
// Instead of using libjingle's logging implementation, the libjingle macros are
|
|
// mapped to the corresponding base/logging.h macro (chromium's VLOG).
|
|
// If this file is included outside of libjingle (e.g. in wrapper code) it
|
|
// should be included after base/logging.h (if any) or compiler error or
|
|
// unexpected behavior may occur (macros that have the same name in libjingle as
|
|
// in chromium will use the libjingle definition if this file is included
|
|
// first).
|
|
|
|
// Setting the LoggingSeverity (and lower) that should be written to file should
|
|
// be done via command line by specifying the flags:
|
|
// --vmodule or --v please see base/logging.h for details on how to use them.
|
|
// Specifying what file to write to is done using InitLogging also in
|
|
// base/logging.h.
|
|
|
|
// The macros and classes declared in here are not described as they are
|
|
// NOT TO BE USED outside of libjingle.
|
|
|
|
#ifndef THIRD_PARTY_LIBJINGLE_OVERRIDES_WEBRTC_BASE_LOGGING_H_
|
|
#define THIRD_PARTY_LIBJINGLE_OVERRIDES_WEBRTC_BASE_LOGGING_H_
|
|
|
|
#include "third_party/webrtc/overrides/webrtc/base/diagnostic_logging.h"
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Libjingle macros which are mapped over to their VLOG equivalent in
|
|
// base/logging.h
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#if defined(LOGGING_INSIDE_WEBRTC)
|
|
|
|
#define DIAGNOSTIC_LOG(sev, ctx, err, ...) \
|
|
rtc::DiagnosticLogMessage( \
|
|
__FILE__, __LINE__, sev, VLOG_IS_ON(sev), \
|
|
rtc::ERRCTX_ ## ctx, err, ##__VA_ARGS__).stream()
|
|
|
|
#define LOG_CHECK_LEVEL(sev) VLOG_IS_ON(rtc::sev)
|
|
#define LOG_CHECK_LEVEL_V(sev) VLOG_IS_ON(sev)
|
|
|
|
#define LOG_V(sev) DIAGNOSTIC_LOG(sev, NONE, 0)
|
|
#undef LOG
|
|
#define LOG(sev) DIAGNOSTIC_LOG(rtc::sev, NONE, 0)
|
|
|
|
// The _F version prefixes the message with the current function name.
|
|
#if defined(__GNUC__) && defined(_DEBUG)
|
|
#define LOG_F(sev) LOG(sev) << __PRETTY_FUNCTION__ << ": "
|
|
#else
|
|
#define LOG_F(sev) LOG(sev) << __FUNCTION__ << ": "
|
|
#endif
|
|
|
|
#define LOG_E(sev, ctx, err, ...) \
|
|
DIAGNOSTIC_LOG(rtc::sev, ctx, err, ##__VA_ARGS__)
|
|
|
|
#undef LOG_ERRNO_EX
|
|
#define LOG_ERRNO_EX(sev, err) LOG_E(sev, ERRNO, err)
|
|
#undef LOG_ERRNO
|
|
#define LOG_ERRNO(sev) LOG_ERRNO_EX(sev, errno)
|
|
|
|
#if defined(WEBRTC_WIN)
|
|
#define LOG_GLE_EX(sev, err) LOG_E(sev, HRESULT, err)
|
|
#define LOG_GLE(sev) LOG_GLE_EX(sev, GetLastError())
|
|
#define LOG_GLEM(sev, mod) LOG_E(sev, HRESULT, GetLastError(), mod)
|
|
#define LOG_ERR_EX(sev, err) LOG_GLE_EX(sev, err)
|
|
#define LOG_ERR(sev) LOG_GLE(sev)
|
|
#define LAST_SYSTEM_ERROR (::GetLastError())
|
|
#else
|
|
#define LOG_ERR_EX(sev, err) LOG_ERRNO_EX(sev, err)
|
|
#define LOG_ERR(sev) LOG_ERRNO(sev)
|
|
#define LAST_SYSTEM_ERROR (errno)
|
|
#endif // OS_WIN
|
|
|
|
#undef PLOG
|
|
#define PLOG(sev, err) LOG_ERR_EX(sev, err)
|
|
|
|
#endif // LOGGING_INSIDE_WEBRTC
|
|
|
|
#endif // THIRD_PARTY_LIBJINGLE_OVERRIDES_WEBRTC_BASE_LOGGING_H_
|