// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- // vim: ts=8 sw=2 smarttab #include "formatter.h" #include #if FMT_VERSION >= 60000 #include #else #include #endif template <> struct fmt::formatter { // ignore the format string template constexpr auto parse(ParseContext &ctx) { return ctx.begin(); } template auto format(const seastar::lowres_system_clock::time_point& t, FormatContext& ctx) { std::time_t tt = std::chrono::duration_cast( t.time_since_epoch()).count(); auto milliseconds = (t.time_since_epoch() % std::chrono::seconds(1)).count(); return fmt::format_to(ctx.out(), "{:%Y-%m-%d %H:%M:%S} {:03d}", fmt::localtime(tt), milliseconds); } }; template <> struct fmt::formatter { // ignore the format string template constexpr auto parse(ParseContext &ctx) { return ctx.begin(); } template auto format(const ceph::coarse_real_clock::time_point& t, FormatContext& ctx) { std::time_t tt = std::chrono::duration_cast( t.time_since_epoch()).count(); auto milliseconds = (t.time_since_epoch() % std::chrono::seconds(1)).count(); return fmt::format_to(ctx.out(), "{:%Y-%m-%d %H:%M:%S} {:03d}", fmt::localtime(tt), milliseconds); } }; namespace std { ostream& operator<<(ostream& out, const seastar::lowres_system_clock::time_point& t) { return out << fmt::format("{}", t); } ostream& operator<<(ostream& out, const ceph::coarse_real_clock::time_point& t) { return out << fmt::format("{}", t); } }