27 if (
sizeof...(args) == 0) {
32 f_msg = std::vformat(fmt, std::make_format_args(std::forward<Args>(args)...));
33 }
catch (
const std::format_error& e) {
38 const auto tp = std::chrono::system_clock::time_point(std::chrono::milliseconds(pack.time));
40 const char* level_str;
42 case LogLevel::TRACE: level_str =
"[TRACE]";
44 case LogLevel::DEBUG: level_str =
"[DEBUG]";
46 case LogLevel::INFO: level_str =
"[INFO]";
48 case LogLevel::WARN: level_str =
"[WARN]";
50 case LogLevel::ERROR: level_str =
"[ERROR]";
52 case LogLevel::FATAL: level_str =
"[FATAL]";
54 default: level_str =
"[OUT]";
59 "{:%Y-%m-%d %H:%M:%S} [{}] {} {}",
60 std::chrono::time_point_cast<std::chrono::milliseconds>(tp),