diff options
Diffstat (limited to 'absl/log/internal/log_format.cc')
-rw-r--r-- | absl/log/internal/log_format.cc | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/absl/log/internal/log_format.cc b/absl/log/internal/log_format.cc index 5b280a2d..b8cd5ac4 100644 --- a/absl/log/internal/log_format.cc +++ b/absl/log/internal/log_format.cc @@ -32,6 +32,7 @@ #include "absl/base/config.h" #include "absl/base/log_severity.h" #include "absl/base/optimization.h" +#include "absl/log/internal/append_truncated.h" #include "absl/log/internal/config.h" #include "absl/log/internal/globals.h" #include "absl/strings/numbers.h" @@ -143,15 +144,6 @@ size_t FormatBoundedFields(absl::LogSeverity severity, absl::Time timestamp, return bytes_formatted; } -// Copies into `dst` as many bytes of `src` as will fit, then advances `dst` -// past the copied bytes and returns the number of bytes written. -size_t AppendTruncated(absl::string_view src, absl::Span<char>& dst) { - if (src.size() > dst.size()) src = src.substr(0, dst.size()); - memcpy(dst.data(), src.data(), src.size()); - dst.remove_prefix(src.size()); - return src.size(); -} - size_t FormatLineNumber(int line, absl::Span<char>& buf) { constexpr size_t kLineFieldMaxLen = sizeof(":] ") + (1 + std::numeric_limits<int>::digits10 + 1) - sizeof(""); @@ -177,13 +169,13 @@ std::string FormatLogMessage(absl::LogSeverity severity, absl::CivilSecond civil_second, absl::Duration subsecond, log_internal::Tid tid, absl::string_view basename, int line, - absl::string_view message) { + PrefixFormat format, absl::string_view message) { return absl::StrFormat( - "%c%02d%02d %02d:%02d:%02d.%06d %7d %s:%d] %s", + "%c%02d%02d %02d:%02d:%02d.%06d %7d %s:%d] %s%s", absl::LogSeverityName(severity)[0], civil_second.month(), civil_second.day(), civil_second.hour(), civil_second.minute(), civil_second.second(), absl::ToInt64Microseconds(subsecond), tid, - basename, line, message); + basename, line, format == PrefixFormat::kRaw ? "RAW: " : "", message); } // This method is fairly hot, and the library always passes a huge `buf`, so we @@ -197,10 +189,12 @@ std::string FormatLogMessage(absl::LogSeverity severity, // 3. line number and bracket size_t FormatLogPrefix(absl::LogSeverity severity, absl::Time timestamp, log_internal::Tid tid, absl::string_view basename, - int line, absl::Span<char>& buf) { + int line, PrefixFormat format, absl::Span<char>& buf) { auto prefix_size = FormatBoundedFields(severity, timestamp, tid, buf); - prefix_size += AppendTruncated(basename, buf); + prefix_size += log_internal::AppendTruncated(basename, buf); prefix_size += FormatLineNumber(line, buf); + if (format == PrefixFormat::kRaw) + prefix_size += log_internal::AppendTruncated("RAW: ", buf); return prefix_size; } |