#pragma once #include "level.hpp" #include #include #include namespace cruft::log { struct packet { using clock = std::chrono::high_resolution_clock; packet (level_t _level, std::string _message) : level (_level) , message (std::move (_message)) , timestamp (clock::now ()) { ; } template packet ( level_t _level, std::string_view _format, ArgsT &&..._args ) : packet ( _level, fmt::vformat ( _format, fmt::make_format_args( std::forward (_args)... ) ) ) { ; } template constexpr packet ( level_t _level, fmt::format_string &&_format, ArgsT &&..._args ) : packet ( _level, fmt::format ( std::forward> (_format), std::forward (_args)... ) ) { ; } level_t level; std::string message; clock::time_point timestamp; }; }