From 2cb61c8809c9b0602753a40139943bec8042282d Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Fri, 19 Sep 2025 13:27:41 +0200 Subject: [PATCH] Fix FMT 12 compatibility by replacing fmt::localtime with std::localtime MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace deprecated fmt::localtime with std::localtime in timestamp formatting - Add required include for std::localtime - Dereference std::localtime return pointer for proper fmt formatting - Fixes compatibility with FMT 12+ where fmt::localtime was removed 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- logger/Logger.cxx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/logger/Logger.cxx b/logger/Logger.cxx index 28704df..caf41e0 100644 --- a/logger/Logger.cxx +++ b/logger/Logger.cxx @@ -15,6 +15,7 @@ #endif #include // printf +#include // std::localtime #include #include // std::back_inserter @@ -171,11 +172,11 @@ Logger::Logger(Severity severity, Verbosity verbosity, std::string_view file, st break; case VSpec::Info::timestamp_us: FillTimeInfos(); - fmt::format_to(std::back_inserter(fBWPrefix), "[{:%H:%M:%S}.{:06}]", fmt::localtime(fInfos.timestamp), fInfos.us.count()); + fmt::format_to(std::back_inserter(fBWPrefix), "[{:%H:%M:%S}.{:06}]", *std::localtime(&fInfos.timestamp), fInfos.us.count()); break; case VSpec::Info::timestamp_s: FillTimeInfos(); - fmt::format_to(std::back_inserter(fBWPrefix), "[{:%H:%M:%S}]", fmt::localtime(fInfos.timestamp)); + fmt::format_to(std::back_inserter(fBWPrefix), "[{:%H:%M:%S}]", *std::localtime(&fInfos.timestamp)); break; case VSpec::Info::severity: fmt::format_to(std::back_inserter(fBWPrefix), "[{}]", fInfos.severity_name); @@ -207,11 +208,11 @@ Logger::Logger(Severity severity, Verbosity verbosity, std::string_view file, st break; case VSpec::Info::timestamp_us: FillTimeInfos(); - fmt::format_to(std::back_inserter(fColorPrefix), "[{}{:%H:%M:%S}.{:06}{}]", startColor(Color::fgCyan), fmt::localtime(fInfos.timestamp), fInfos.us.count(), endColor()); + fmt::format_to(std::back_inserter(fColorPrefix), "[{}{:%H:%M:%S}.{:06}{}]", startColor(Color::fgCyan), *std::localtime(&fInfos.timestamp), fInfos.us.count(), endColor()); break; case VSpec::Info::timestamp_s: FillTimeInfos(); - fmt::format_to(std::back_inserter(fColorPrefix), "[{}{:%H:%M:%S}{}]", startColor(Color::fgCyan), fmt::localtime(fInfos.timestamp), endColor()); + fmt::format_to(std::back_inserter(fColorPrefix), "[{}{:%H:%M:%S}{}]", startColor(Color::fgCyan), *std::localtime(&fInfos.timestamp), endColor()); break; case VSpec::Info::severity: fmt::format_to(std::back_inserter(fColorPrefix), "[{}]", GetColoredSeverityString(fInfos.severity));