Add support for logging absl::string_view.
Bug: webrtc:8982 Change-Id: I5691f91ea663756666cf187ee223ede50f87d5f0 Reviewed-on: https://webrtc-review.googlesource.com/99840 Commit-Queue: Jonas Olsson <jonasolsson@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24707}
This commit is contained in:
@ -198,6 +198,7 @@ rtc_source_set("logging") {
|
|||||||
":platform_thread_types",
|
":platform_thread_types",
|
||||||
":stringutils",
|
":stringutils",
|
||||||
":timeutils",
|
":timeutils",
|
||||||
|
"//third_party/abseil-cpp/absl/strings",
|
||||||
]
|
]
|
||||||
|
|
||||||
if (build_with_chromium) {
|
if (build_with_chromium) {
|
||||||
|
@ -540,6 +540,9 @@ void Log(const LogArgType* fmt, ...) {
|
|||||||
case LogArgType::kStdString:
|
case LogArgType::kStdString:
|
||||||
log_message.stream() << *va_arg(args, const std::string*);
|
log_message.stream() << *va_arg(args, const std::string*);
|
||||||
break;
|
break;
|
||||||
|
case LogArgType::kStringView:
|
||||||
|
log_message.stream() << *va_arg(args, const absl::string_view*);
|
||||||
|
break;
|
||||||
case LogArgType::kVoidP:
|
case LogArgType::kVoidP:
|
||||||
log_message.stream() << rtc::ToHex(
|
log_message.stream() << rtc::ToHex(
|
||||||
reinterpret_cast<uintptr_t>(va_arg(args, const void*)));
|
reinterpret_cast<uintptr_t>(va_arg(args, const void*)));
|
||||||
|
@ -55,6 +55,7 @@
|
|||||||
#include <CoreServices/CoreServices.h>
|
#include <CoreServices/CoreServices.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "absl/strings/string_view.h"
|
||||||
#include "rtc_base/constructormagic.h"
|
#include "rtc_base/constructormagic.h"
|
||||||
#include "rtc_base/deprecation.h"
|
#include "rtc_base/deprecation.h"
|
||||||
#include "rtc_base/strings/string_builder.h"
|
#include "rtc_base/strings/string_builder.h"
|
||||||
@ -174,7 +175,7 @@ enum class LogArgType : int8_t {
|
|||||||
kLongDouble,
|
kLongDouble,
|
||||||
kCharP,
|
kCharP,
|
||||||
kStdString,
|
kStdString,
|
||||||
// TODO(kwiberg): Add absl::StringView.
|
kStringView,
|
||||||
kVoidP,
|
kVoidP,
|
||||||
kLogMetadata,
|
kLogMetadata,
|
||||||
kLogMetadataErr,
|
kLogMetadataErr,
|
||||||
@ -236,7 +237,10 @@ inline Val<LogArgType::kStdString, const std::string*> MakeVal(
|
|||||||
const std::string& x) {
|
const std::string& x) {
|
||||||
return {&x};
|
return {&x};
|
||||||
}
|
}
|
||||||
// TODO(kwiberg): Add absl::string_view
|
inline Val<LogArgType::kStringView, const absl::string_view*> MakeVal(
|
||||||
|
const absl::string_view& x) {
|
||||||
|
return {&x};
|
||||||
|
}
|
||||||
|
|
||||||
inline Val<LogArgType::kVoidP, const void*> MakeVal(const void* x) {
|
inline Val<LogArgType::kVoidP, const void*> MakeVal(const void* x) {
|
||||||
return {x};
|
return {x};
|
||||||
|
@ -184,9 +184,45 @@ TEST(LogTest, SingleStream) {
|
|||||||
EXPECT_NE(std::string::npos, str.find("INFO"));
|
EXPECT_NE(std::string::npos, str.find("INFO"));
|
||||||
EXPECT_EQ(std::string::npos, str.find("VERBOSE"));
|
EXPECT_EQ(std::string::npos, str.find("VERBOSE"));
|
||||||
|
|
||||||
|
int i = 1;
|
||||||
|
long l = 2l;
|
||||||
|
long long ll = 3ll;
|
||||||
|
|
||||||
|
unsigned int u = 4u;
|
||||||
|
unsigned long ul = 5ul;
|
||||||
|
unsigned long long ull = 6ull;
|
||||||
|
|
||||||
|
std::string s1 = "char*";
|
||||||
|
std::string s2 = "std::string";
|
||||||
|
std::string s3 = "absl::stringview";
|
||||||
|
|
||||||
|
void* p = reinterpret_cast<void*>(0xabcd);
|
||||||
|
|
||||||
|
// Log all suported types(except doubles/floats) as a sanity-check.
|
||||||
|
RTC_LOG(LS_INFO) << "|" << i << "|" << l << "|" << ll << "|" << u << "|" << ul
|
||||||
|
<< "|" << ull << "|" << s1.c_str() << "|" << s2 << "|"
|
||||||
|
<< absl::string_view(s3) << "|" << p << "|";
|
||||||
|
|
||||||
|
// Signed integers
|
||||||
|
EXPECT_NE(std::string::npos, str.find("|1|"));
|
||||||
|
EXPECT_NE(std::string::npos, str.find("|2|"));
|
||||||
|
EXPECT_NE(std::string::npos, str.find("|3|"));
|
||||||
|
|
||||||
|
// Unsigned integers
|
||||||
|
EXPECT_NE(std::string::npos, str.find("|4|"));
|
||||||
|
EXPECT_NE(std::string::npos, str.find("|5|"));
|
||||||
|
EXPECT_NE(std::string::npos, str.find("|6|"));
|
||||||
|
|
||||||
|
// Strings
|
||||||
|
EXPECT_NE(std::string::npos, str.find("|char*|"));
|
||||||
|
EXPECT_NE(std::string::npos, str.find("|std::string|"));
|
||||||
|
EXPECT_NE(std::string::npos, str.find("|absl::stringview|"));
|
||||||
|
|
||||||
|
// void*
|
||||||
|
EXPECT_NE(std::string::npos, str.find("|abcd|"));
|
||||||
|
|
||||||
LogMessage::RemoveLogToStream(&stream);
|
LogMessage::RemoveLogToStream(&stream);
|
||||||
EXPECT_EQ(LS_NONE, LogMessage::GetLogToStream(&stream));
|
EXPECT_EQ(LS_NONE, LogMessage::GetLogToStream(&stream));
|
||||||
|
|
||||||
EXPECT_EQ(sev, LogMessage::GetLogToStream(nullptr));
|
EXPECT_EQ(sev, LogMessage::GetLogToStream(nullptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user