diff --git a/src/LogBackend.cxx b/src/LogBackend.cxx index f0dffc3a9..4a24309dc 100644 --- a/src/LogBackend.cxx +++ b/src/LogBackend.cxx @@ -3,12 +3,15 @@ #include "LogBackend.hxx" #include "Log.hxx" +#include "lib/fmt/Unsafe.hxx" #include "util/Compiler.h" #include "util/Domain.hxx" #include "util/StringStrip.hxx" #include "Version.h" #include "config.h" +#include <fmt/chrono.h> + #include <cassert> #include <stdio.h> @@ -19,6 +22,8 @@ #include <syslog.h> #endif +using std::string_view_literals::operator""sv; + #ifdef ANDROID #include <android/log.h> #include "android/LogListener.hxx" @@ -73,14 +78,13 @@ EnableLogTimestamp() noexcept enable_timestamp = true; } -static const char * +static std::string_view log_date() noexcept { static constexpr size_t LOG_DATE_BUF_SIZE = std::char_traits<char>::length("Jan 22 15:43:14 : ") + 1; static char buf[LOG_DATE_BUF_SIZE]; time_t t = time(nullptr); - strftime(buf, LOG_DATE_BUF_SIZE, "%b %d %H:%M:%S : ", localtime(&t)); - return buf; + return FmtUnsafeSV(buf, "{:%b %d %H:%M:%S} : "sv, fmt::localtime(t)); } #ifdef HAVE_SYSLOG @@ -148,7 +152,7 @@ static void FileLog(const Domain &domain, std::string_view message) noexcept { fmt::print(stderr, "{}{}: {}\n", - enable_timestamp ? log_date() : "", + enable_timestamp ? log_date() : ""sv, domain.GetName(), StripRight(message));