diff --git a/include/spdlog/details/pattern_formatter_impl.h b/include/spdlog/details/pattern_formatter_impl.h index 7c44dd7f..d2a18427 100644 --- a/include/spdlog/details/pattern_formatter_impl.h +++ b/include/spdlog/details/pattern_formatter_impl.h @@ -245,6 +245,17 @@ class e_formatter :public flag_formatter } }; +// microseconds +class f_formatter :public flag_formatter +{ + void format(details::log_msg& msg, const std::tm&) override + { + auto duration = msg.time.time_since_epoch(); + auto micros = std::chrono::duration_cast(duration).count() % 1000000; + msg.formatted << fmt::pad(static_cast(micros), 6, '0'); + } +}; + // AM/PM class p_formatter :public flag_formatter { @@ -537,6 +548,10 @@ inline void spdlog::pattern_formatter::handle_flag(char flag) _formatters.push_back(std::unique_ptr(new details::e_formatter())); break; + case('f') : + _formatters.push_back(std::unique_ptr(new details::f_formatter())); + break; + case('p') : _formatters.push_back(std::unique_ptr(new details::p_formatter())); break;