| // Copyright (c) 2017 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. |
| |
| #ifndef NET_THIRD_PARTY_QUIC_PLATFORM_IMPL_QUIC_LOGGING_IMPL_H_ |
| #define NET_THIRD_PARTY_QUIC_PLATFORM_IMPL_QUIC_LOGGING_IMPL_H_ |
| |
| #include "base/logging.h" |
| #include "net/base/net_export.h" |
| |
| #define QUIC_LOG_IMPL(severity) QUIC_CHROMIUM_LOG_##severity |
| #define QUIC_VLOG_IMPL(verbose_level) VLOG(verbose_level) |
| #define QUIC_LOG_EVERY_N_SEC_IMPL(severity, seconds) QUIC_LOG_IMPL(severity) |
| #define QUIC_LOG_FIRST_N_IMPL(severity, n) QUIC_LOG_IMPL(severity) |
| #define QUIC_DLOG_IMPL(severity) QUIC_CHROMIUM_DLOG_##severity |
| #define QUIC_DLOG_IF_IMPL(severity, condition) \ |
| QUIC_CHROMIUM_DLOG_IF_##severity(condition) |
| #define QUIC_LOG_IF_IMPL(severity, condition) \ |
| QUIC_CHROMIUM_LOG_IF_##severity(condition) |
| |
| #define QUIC_CHROMIUM_LOG_INFO VLOG(1) |
| #define QUIC_CHROMIUM_LOG_WARNING DLOG(WARNING) |
| #define QUIC_CHROMIUM_LOG_ERROR DLOG(ERROR) |
| #define QUIC_CHROMIUM_LOG_FATAL LOG(FATAL) |
| #define QUIC_CHROMIUM_LOG_DFATAL LOG(DFATAL) |
| |
| #define QUIC_CHROMIUM_DLOG_INFO DVLOG(1) |
| #define QUIC_CHROMIUM_DLOG_WARNING DLOG(WARNING) |
| #define QUIC_CHROMIUM_DLOG_ERROR DLOG(ERROR) |
| #define QUIC_CHROMIUM_DLOG_FATAL DLOG(FATAL) |
| #define QUIC_CHROMIUM_DLOG_DFATAL DLOG(DFATAL) |
| |
| #define QUIC_CHROMIUM_LOG_IF_INFO(condition) VLOG_IF(1, condition) |
| #define QUIC_CHROMIUM_LOG_IF_WARNING(condition) DLOG_IF(WARNING, condition) |
| #define QUIC_CHROMIUM_LOG_IF_ERROR(condition) DLOG_IF(ERROR, condition) |
| #define QUIC_CHROMIUM_LOG_IF_FATAL(condition) LOG_IF(FATAL, condition) |
| #define QUIC_CHROMIUM_LOG_IF_DFATAL(condition) LOG_IF(DFATAL, condition) |
| |
| #define QUIC_CHROMIUM_DLOG_IF_INFO(condition) DVLOG_IF(1, condition) |
| #define QUIC_CHROMIUM_DLOG_IF_WARNING(condition) DLOG_IF(WARNING, condition) |
| #define QUIC_CHROMIUM_DLOG_IF_ERROR(condition) DLOG_IF(ERROR, condition) |
| #define QUIC_CHROMIUM_DLOG_IF_FATAL(condition) DLOG_IF(FATAL, condition) |
| #define QUIC_CHROMIUM_DLOG_IF_DFATAL(condition) DLOG_IF(DFATAL, condition) |
| |
| #define QUIC_DVLOG_IMPL(verbose_level) DVLOG(verbose_level) |
| #define QUIC_DVLOG_IF_IMPL(verbose_level, condition) \ |
| DVLOG_IF(verbose_level, condition) |
| |
| #define QUIC_LOG_INFO_IS_ON_IMPL() 0 |
| #ifdef NDEBUG |
| #define QUIC_LOG_WARNING_IS_ON_IMPL() 0 |
| #define QUIC_LOG_ERROR_IS_ON_IMPL() 0 |
| #else |
| #define QUIC_LOG_WARNING_IS_ON_IMPL() 1 |
| #define QUIC_LOG_ERROR_IS_ON_IMPL() 1 |
| #endif |
| #define QUIC_DLOG_INFO_IS_ON_IMPL() 0 |
| |
| #if defined(OS_WIN) |
| // wingdi.h defines ERROR to be 0. When we call QUIC_DLOG(ERROR), it gets |
| // substituted with 0, and it expands to QUIC_CHROMIUM_DLOG_0. To allow us to |
| // keep using this syntax, we define this macro to do the same thing as |
| // QUIC_CHROMIUM_DLOG_ERROR. |
| #define QUIC_CHROMIUM_LOG_0 QUIC_CHROMIUM_LOG_ERROR |
| #define QUIC_CHROMIUM_DLOG_0 QUIC_CHROMIUM_DLOG_ERROR |
| #define QUIC_CHROMIUM_LOG_IF_0 QUIC_CHROMIUM_LOG_IF_ERROR |
| #define QUIC_CHROMIUM_DLOG_IF_0 QUIC_CHROMIUM_DLOG_IF_ERROR |
| #endif |
| |
| #define QUIC_PREDICT_FALSE_IMPL(x) x |
| |
| #define QUIC_NOTREACHED_IMPL() NOTREACHED() |
| |
| #define QUIC_PLOG_IMPL(severity) DVLOG(1) |
| |
| namespace quic { |
| template <typename T> |
| NET_EXPORT_PRIVATE inline std::ostream& operator<<(std::ostream& out, |
| const std::vector<T>& v) { |
| out << "["; |
| const char* sep = ""; |
| for (size_t i = 0; i < v.size(); ++i) { |
| out << sep << v[i]; |
| sep = ", "; |
| } |
| return out << "]"; |
| } |
| } // namespace quic |
| |
| #endif // NET_THIRD_PARTY_QUIC_PLATFORM_IMPL_QUIC_LOGGING_IMPL_H_ |