31 template <
typename Lock >
46 template<
typename Message_Builder >
48 trace( Message_Builder && msg_builder )
53 template<
typename Message_Builder >
55 info( Message_Builder && msg_builder )
60 template<
typename Message_Builder >
62 warn( Message_Builder && msg_builder )
67 template<
typename Message_Builder >
69 error( Message_Builder && msg_builder )
78 std::lock_guard< Lock > lock{
m_lock };
80 namespace stdchrono = std::chrono;
82 auto now = stdchrono::system_clock::now();
83 auto ms = stdchrono::duration_cast<
84 stdchrono::milliseconds >( now.time_since_epoch() );
85 std::time_t unix_time = stdchrono::duration_cast<
86 stdchrono::seconds >( ms ).count();
90 "[{:%Y-%m-%d %H:%M:%S}.{:03d}] {}: {}",
92 static_cast< int >( ms.count() % 1000u ),