27 static std::string
do_format(
FLogPack pack,
const absl::FormatSpec<Args...>& fmt,
const Args&... args) {
30 f_msg = absl::StrFormat(fmt, args...);
31 }
catch (
const std::exception& e) {
35 const auto tp = std::chrono::system_clock::time_point(std::chrono::milliseconds(pack.time));
37 const char* level_str;
39 case LogLevel::TRACE: level_str =
"[TRACE]";
41 case LogLevel::DEBUG: level_str =
"[DEBUG]";
43 case LogLevel::INFO: level_str =
"[INFO]";
45 case LogLevel::WARN: level_str =
"[WARN]";
47 case LogLevel::ERROR: level_str =
"[ERROR]";
49 case LogLevel::FATAL: level_str =
"[FATAL]";
51 default: level_str =
"[OUT]";
55 std::time_t tt = std::chrono::system_clock::to_time_t(tp);
59 localtime_s(&tm, &tt);
60 #elif defined(__linux__) || defined(__APPLE__) || defined(__unix__)
61 localtime_r(&tt, &tm);
63 tm = *std::localtime(&tt);
66 std::ostringstream t_oss;
67 t_oss << std::put_time(&tm,
"%Y-%m-%d %H:%M:%S");
69 return absl::StrFormat(
"%s [%s] %s %s", t_oss.str(), *pack.name, level_str, f_msg);