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",
|
||||
":stringutils",
|
||||
":timeutils",
|
||||
"//third_party/abseil-cpp/absl/strings",
|
||||
]
|
||||
|
||||
if (build_with_chromium) {
|
||||
|
@ -540,6 +540,9 @@ void Log(const LogArgType* fmt, ...) {
|
||||
case LogArgType::kStdString:
|
||||
log_message.stream() << *va_arg(args, const std::string*);
|
||||
break;
|
||||
case LogArgType::kStringView:
|
||||
log_message.stream() << *va_arg(args, const absl::string_view*);
|
||||
break;
|
||||
case LogArgType::kVoidP:
|
||||
log_message.stream() << rtc::ToHex(
|
||||
reinterpret_cast<uintptr_t>(va_arg(args, const void*)));
|
||||
|
@ -55,6 +55,7 @@
|
||||
#include <CoreServices/CoreServices.h>
|
||||
#endif
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "rtc_base/constructormagic.h"
|
||||
#include "rtc_base/deprecation.h"
|
||||
#include "rtc_base/strings/string_builder.h"
|
||||
@ -174,7 +175,7 @@ enum class LogArgType : int8_t {
|
||||
kLongDouble,
|
||||
kCharP,
|
||||
kStdString,
|
||||
// TODO(kwiberg): Add absl::StringView.
|
||||
kStringView,
|
||||
kVoidP,
|
||||
kLogMetadata,
|
||||
kLogMetadataErr,
|
||||
@ -236,7 +237,10 @@ inline Val<LogArgType::kStdString, const std::string*> MakeVal(
|
||||
const std::string& 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) {
|
||||
return {x};
|
||||
|
@ -184,9 +184,45 @@ TEST(LogTest, SingleStream) {
|
||||
EXPECT_NE(std::string::npos, str.find("INFO"));
|
||||
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);
|
||||
EXPECT_EQ(LS_NONE, LogMessage::GetLogToStream(&stream));
|
||||
|
||||
EXPECT_EQ(sev, LogMessage::GetLogToStream(nullptr));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user