Adding RTC_ prefixed LOG macros.
In order to avoid conflicts with downstream projects WebRTC is going
to prefix its LOG macros with RTC_.
This CL renames all the LOG macros to macros with the RTC_ prefix and
it also defines backward compatibility LOG macros in order to let
downstream projects to switch to RTC_ prefixed macros without breaking
them.
A follow-up CL will remove the usage of LOG macros in WebRTC.
Bug: webrtc:8452
Change-Id: Ic3e495cba6c772f65259dc65ee278560a59d02d7
Reviewed-on: https://webrtc-review.googlesource.com/15442
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20456}
diff --git a/rtc_base/checks.cc b/rtc_base/checks.cc
index e4295b7..8f452e8 100644
--- a/rtc_base/checks.cc
+++ b/rtc_base/checks.cc
@@ -22,7 +22,7 @@
#endif
#if defined(WEBRTC_ANDROID)
-#define RTC_LOG_TAG "rtc"
+#define RTC_LOG_TAG_ANDROID "rtc"
#include <android/log.h> // NOLINT
#endif
@@ -43,7 +43,7 @@
void VPrintError(const char* format, va_list args) {
#if defined(WEBRTC_ANDROID)
- __android_log_vprint(ANDROID_LOG_ERROR, RTC_LOG_TAG, format, args);
+ __android_log_vprint(ANDROID_LOG_ERROR, RTC_LOG_TAG_ANDROID, format, args);
#else
vfprintf(stderr, format, args);
#endif
diff --git a/rtc_base/checks.h b/rtc_base/checks.h
index 6e74f26..9f5fc2e 100644
--- a/rtc_base/checks.h
+++ b/rtc_base/checks.h
@@ -221,6 +221,7 @@
#define RTC_UNREACHABLE_CODE_HIT false
#define RTC_NOTREACHED() RTC_DCHECK(RTC_UNREACHABLE_CODE_HIT)
+// TODO(bugs.webrtc.org/8454): Add an RTC_ prefix or rename differently.
#define FATAL() rtc::FatalMessage(__FILE__, __LINE__).stream()
// TODO(ajm): Consider adding RTC_NOTIMPLEMENTED macro when
// base/logging.h and system_wrappers/logging.h are consolidated such that we
diff --git a/rtc_base/logging.h b/rtc_base/logging.h
index 0f544e4..922e701 100644
--- a/rtc_base/logging.h
+++ b/rtc_base/logging.h
@@ -8,40 +8,40 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-// LOG(...) an ostream target that can be used to send formatted
+// RTC_LOG(...) an ostream target that can be used to send formatted
// output to a variety of logging targets, such as debugger console, stderr,
// or any LogSink.
-// The severity level passed as the first argument to the LOGging
+// The severity level passed as the first argument to the logging
// functions is used as a filter, to limit the verbosity of the logging.
-// Static members of LogMessage documented below are used to control the
+// Static members of LogMessage documented below are used to control the
// verbosity and target of the output.
-// There are several variations on the LOG macro which facilitate logging
+// There are several variations on the RTC_LOG macro which facilitate logging
// of common error conditions, detailed below.
-// LOG(sev) logs the given stream at severity "sev", which must be a
+// RTC_LOG(sev) logs the given stream at severity "sev", which must be a
// compile-time constant of the LoggingSeverity type, without the namespace
// prefix.
-// LOG_V(sev) Like LOG(), but sev is a run-time variable of the LoggingSeverity
-// type (basically, it just doesn't prepend the namespace).
-// LOG_F(sev) Like LOG(), but includes the name of the current function.
-// LOG_T(sev) Like LOG(), but includes the this pointer.
-// LOG_T_F(sev) Like LOG_F(), but includes the this pointer.
-// LOG_GLE(M)(sev [, mod]) attempt to add a string description of the
+// RTC_LOG_V(sev) Like RTC_LOG(), but sev is a run-time variable of the
+// LoggingSeverity type (basically, it just doesn't prepend the namespace).
+// RTC_LOG_F(sev) Like RTC_LOG(), but includes the name of the current function.
+// RTC_LOG_T(sev) Like RTC_LOG(), but includes the this pointer.
+// RTC_LOG_T_F(sev) Like RTC_LOG_F(), but includes the this pointer.
+// RTC_LOG_GLE(M)(sev [, mod]) attempt to add a string description of the
// HRESULT returned by GetLastError. The "M" variant allows searching of a
// DLL's string table for the error description.
-// LOG_ERRNO(sev) attempts to add a string description of an errno-derived
+// RTC_LOG_ERRNO(sev) attempts to add a string description of an errno-derived
// error. errno and associated facilities exist on both Windows and POSIX,
// but on Windows they only apply to the C/C++ runtime.
-// LOG_ERR(sev) is an alias for the platform's normal error system, i.e. _GLE on
-// Windows and _ERRNO on POSIX.
+// RTC_LOG_ERR(sev) is an alias for the platform's normal error system, i.e.
+// _GLE on Windows and _ERRNO on POSIX.
// (The above three also all have _EX versions that let you specify the error
// code, rather than using the last one.)
-// LOG_E(sev, ctx, err, ...) logs a detailed error interpreted using the
+// RTC_LOG_E(sev, ctx, err, ...) logs a detailed error interpreted using the
// specified context.
-// LOG_CHECK_LEVEL(sev) (and LOG_CHECK_LEVEL_V(sev)) can be used as a test
-// before performing expensive or sensitive operations whose sole purpose is
-// to output logging data at the desired level.
-// Lastly, PLOG(sev, err) is an alias for LOG_ERR_EX.
+// RTC_LOG_CHECK_LEVEL(sev) (and RTC_LOG_CHECK_LEVEL_V(sev)) can be used as a
+// test before performing expensive or sensitive operations whose sole
+// purpose is to output logging data at the desired level.
+// Lastly, RTC_PLOG(sev, err) is an alias for RTC_LOG_ERR_EX.
#ifndef RTC_BASE_LOGGING_H_
#define RTC_BASE_LOGGING_H_
@@ -262,8 +262,6 @@
const void* data, size_t len, bool hex_mode,
LogMultilineState* state);
-#ifndef LOG
-
// The following non-obvious technique for implementation of a
// conditional log stream was stolen from google3/base/logging.h.
@@ -279,90 +277,118 @@
void operator&(std::ostream&) { }
};
-#define LOG_SEVERITY_PRECONDITION(sev) \
+#define RTC_LOG_SEVERITY_PRECONDITION(sev) \
!(rtc::LogMessage::Loggable(sev)) \
? (void) 0 \
: rtc::LogMessageVoidify() &
-#define LOG(sev) \
- LOG_SEVERITY_PRECONDITION(rtc::sev) \
+#define RTC_LOG(sev) \
+ RTC_LOG_SEVERITY_PRECONDITION(rtc::sev) \
rtc::LogMessage(__FILE__, __LINE__, rtc::sev).stream()
// The _V version is for when a variable is passed in. It doesn't do the
// namespace concatination.
-#define LOG_V(sev) \
- LOG_SEVERITY_PRECONDITION(sev) \
+#define RTC_LOG_V(sev) \
+ RTC_LOG_SEVERITY_PRECONDITION(sev) \
rtc::LogMessage(__FILE__, __LINE__, sev).stream()
// The _F version prefixes the message with the current function name.
#if (defined(__GNUC__) && !defined(NDEBUG)) || defined(WANT_PRETTY_LOG_F)
-#define LOG_F(sev) LOG(sev) << __PRETTY_FUNCTION__ << ": "
-#define LOG_T_F(sev) LOG(sev) << this << ": " << __PRETTY_FUNCTION__ << ": "
+#define RTC_LOG_F(sev) RTC_LOG(sev) << __PRETTY_FUNCTION__ << ": "
+#define RTC_LOG_T_F(sev) RTC_LOG(sev) << this << ": " \
+ << __PRETTY_FUNCTION__ << ": "
#else
-#define LOG_F(sev) LOG(sev) << __FUNCTION__ << ": "
-#define LOG_T_F(sev) LOG(sev) << this << ": " << __FUNCTION__ << ": "
+#define RTC_LOG_F(sev) RTC_LOG(sev) << __FUNCTION__ << ": "
+#define RTC_LOG_T_F(sev) RTC_LOG(sev) << this << ": " << __FUNCTION__ << ": "
#endif
-#define LOG_CHECK_LEVEL(sev) \
+#define RTC_LOG_CHECK_LEVEL(sev) \
rtc::LogCheckLevel(rtc::sev)
-#define LOG_CHECK_LEVEL_V(sev) \
+#define RTC_LOG_CHECK_LEVEL_V(sev) \
rtc::LogCheckLevel(sev)
inline bool LogCheckLevel(LoggingSeverity sev) {
return (LogMessage::GetMinLogSeverity() <= sev);
}
-#define LOG_E(sev, ctx, err, ...) \
- LOG_SEVERITY_PRECONDITION(rtc::sev) \
+#define RTC_LOG_E(sev, ctx, err, ...) \
+ RTC_LOG_SEVERITY_PRECONDITION(rtc::sev) \
rtc::LogMessage(__FILE__, __LINE__, rtc::sev, \
- rtc::ERRCTX_ ## ctx, err , ##__VA_ARGS__) \
+ rtc::ERRCTX_ ## ctx, err , ##__VA_ARGS__) \
.stream()
-#define LOG_T(sev) LOG(sev) << this << ": "
+#define RTC_LOG_T(sev) RTC_LOG(sev) << this << ": "
-#define LOG_ERRNO_EX(sev, err) \
- LOG_E(sev, ERRNO, err)
-#define LOG_ERRNO(sev) \
- LOG_ERRNO_EX(sev, errno)
+#define RTC_LOG_ERRNO_EX(sev, err) \
+ RTC_LOG_E(sev, ERRNO, err)
+#define RTC_LOG_ERRNO(sev) \
+ RTC_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 \
+#define RTC_LOG_GLE_EX(sev, err) \
+ RTC_LOG_E(sev, HRESULT, err)
+#define RTC_LOG_GLE(sev) \
+ RTC_LOG_GLE_EX(sev, GetLastError())
+#define RTC_LOG_GLEM(sev, mod) \
+ RTC_LOG_E(sev, HRESULT, GetLastError(), mod)
+#define RTC_LOG_ERR_EX(sev, err) \
+ RTC_LOG_GLE_EX(sev, err)
+#define RTC_LOG_ERR(sev) \
+ RTC_LOG_GLE(sev)
+#define RTC_LAST_SYSTEM_ERROR \
(::GetLastError())
#elif defined(__native_client__) && __native_client__
-#define LOG_ERR_EX(sev, err) \
- LOG(sev)
-#define LOG_ERR(sev) \
- LOG(sev)
-#define LAST_SYSTEM_ERROR \
+#define RTC_LOG_ERR_EX(sev, err) \
+ RTC_LOG(sev)
+#define RTC_LOG_ERR(sev) \
+ RTC_LOG(sev)
+#define RTC_LAST_SYSTEM_ERROR \
(0)
#elif defined(WEBRTC_POSIX)
-#define LOG_ERR_EX(sev, err) \
- LOG_ERRNO_EX(sev, err)
-#define LOG_ERR(sev) \
- LOG_ERRNO(sev)
-#define LAST_SYSTEM_ERROR \
+#define RTC_LOG_ERR_EX(sev, err) \
+ RTC_LOG_ERRNO_EX(sev, err)
+#define RTC_LOG_ERR(sev) \
+ RTC_LOG_ERRNO(sev)
+#define RTC_LAST_SYSTEM_ERROR \
(errno)
#endif // WEBRTC_WIN
-#define LOG_TAG(sev, tag) \
- LOG_SEVERITY_PRECONDITION(sev) \
+#define RTC_LOG_TAG(sev, tag) \
+ RTC_LOG_SEVERITY_PRECONDITION(sev) \
rtc::LogMessage(nullptr, 0, sev, tag).stream()
-#define PLOG(sev, err) \
- LOG_ERR_EX(sev, err)
+#define RTC_PLOG(sev, err) \
+ RTC_LOG_ERR_EX(sev, err)
// TODO(?): Add an "assert" wrapper that logs in the same manner.
+// TODO(bugs.webrtc.org/8452): Remove these backwards compatibility wrappers.
+#ifndef LOG
+
+#define LOG(sev) RTC_LOG(sev)
+#define LOG_V(sev) RTC_LOG_V(sev)
+#define LOG_F(sev) RTC_LOG_F(sev)
+#define LOG_T_F(sev) RTC_LOG_T_F(sev)
+#define LOG_CHECK_LEVEL(sev) RTC_LOG_CHECK_LEVEL(sev)
+#define LOG_CHECK_LEVEL_V(sev) RTC_LOG_CHECK_LEVEL_V(sev)
+#define LOG_E(sev, ctx, err, ...) RTC_LOG_E(sev, ctx, err, ##__VA_ARGS__)
+#define LOG_T(sev) RTC_LOG_T(sev)
+#define LOG_ERRNO_EX(sev, err) RTC_LOG_ERRNO_EX(sev, err)
+#define LOG_ERRNO(sev) RTC_LOG_ERRNO(sev)
+
+#define LAST_SYSTEM_ERROR RTC_LAST_SYSTEM_ERROR
+#define LOG_ERR_EX(sev, err) RTC_LOG_ERR_EX(sev, err)
+#define LOG_ERR(sev) RTC_LOG_ERR(sev)
+
+#if defined(WEBRTC_WIN)
+#define LOG_GLE_EX(sev, err) RTC_LOG_GLE_EX(sev, err)
+#define LOG_GLE(sev) RTC_LOG_GLE(sev)
+#define LOG_GLEM(sev, mod) RTC_LOG_GLEM(sev, mod)
+#endif // WEBRTC_WIN
+
+#define LOG_TAG(sev, tag) RTC_LOG_TAG(sev, tag)
+#define PLOG(sev, err) RTC_PLOG(sev, err)
+
#endif // LOG
} // namespace rtc