Index: third_party/webrtc_overrides/webrtc/base/logging.h |
diff --git a/third_party/webrtc_overrides/webrtc/base/logging.h b/third_party/webrtc_overrides/webrtc/base/logging.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2d858ecff5b615ca5eff9a61e8967bd029504309 |
--- /dev/null |
+++ b/third_party/webrtc_overrides/webrtc/base/logging.h |
@@ -0,0 +1,93 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// This file overrides the logging macros in WebRTC (webrtc/base/logging.h). |
+// Instead of using WebRTC's logging implementation, the WebRTC macros are |
+// mapped to DIAGNOSTIC_LOGING. In it's implementation (DiagnosticLogMessage in |
+// third_party/webrtc_overrides/webrtc/base/logging.h), the corresponding |
+// base/logging.h macros (e.g. Chromium's VLOG) are used. |
+// If this file is included outside of WebRTC/libjingle 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 WebRTC as in Chromium will use |
+// the WebRTC 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 WebRTC/libjingle. |
+ |
+#ifndef THIRD_PARTY_WEBRTC_OVERRIDES_WEBRTC_BASE_LOGGING_H_ |
+#define THIRD_PARTY_WEBRTC_OVERRIDES_WEBRTC_BASE_LOGGING_H_ |
+ |
+#include "third_party/webrtc_overrides/webrtc/base/diagnostic_logging.h" |
+ |
+////////////////////////////////////////////////////////////////////// |
+// WebRTC macros which in DiagnosticLogMessage 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_WEBRTC_OVERRIDES_WEBRTC_BASE_LOGGING_H_ |