| /* |
| * 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) |
| |
| namespace rtc { |
| |
| // Note that |N| is the size *with* the null terminator. |
| bool CheckVlogIsOnHelper(LoggingSeverity severity, |
| const char* file, size_t N); |
| |
| template <size_t N> |
| bool CheckVlogIsOn(LoggingSeverity severity, const char (&file)[N]) { |
| return CheckVlogIsOnHelper(severity, file, N); |
| } |
| |
| } // namespace rtc |
| |
| #define DIAGNOSTIC_LOG(sev, ctx, err, ...) \ |
| rtc::DiagnosticLogMessage( \ |
| __FILE__, __LINE__, sev, rtc::ERRCTX_ ## ctx, err, ##__VA_ARGS__).stream() |
| |
| #define LOG_CHECK_LEVEL(sev) CheckVlogIsOn(rtc::sev, __FILE__) |
| #define LOG_CHECK_LEVEL_V(sev) CheckVlogIsOn(sev, __FILE__) |
| |
| #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_ |