28 std::function<void(
LogLevel level, std::string_view message)>;
43 void reset() { start_ = clock::now(); }
45 [[nodiscard]]
auto elapsed() const ->
double {
46 return std::chrono::duration<double>(clock::now() - start_).count();
50 using clock = std::chrono::steady_clock;
51 std::chrono::time_point<clock> start_ = clock::now();
54template <
typename... Args>
55inline void log(
LogLevel level, fmt::format_string<Args...> format,
61 log_message(level, fmt::format(format, std::forward<Args>(args)...));
71template <
typename... Args>
72inline void trace(fmt::format_string<Args...> format, Args &&...args) {
78template <
typename... Args>
79inline void debug(fmt::format_string<Args...> format, Args &&...args) {
85template <
typename... Args>
86inline void info(fmt::format_string<Args...> format, Args &&...args) {
92template <
typename... Args>
93inline void warn(fmt::format_string<Args...> format, Args &&...args) {
99template <
typename... Args>
100inline void error(fmt::format_string<Args...> format, Args &&...args) {
106template <
typename... Args>
107inline void critical(fmt::format_string<Args...> format, Args &&...args) {
128using core::stopwatch;
132template <>
struct formatter<
reusex::core::stopwatch> : formatter<double> {
133 template <
typename FormatContext>
135 return formatter<double>::format(sw.
elapsed(), ctx);
auto elapsed() const -> double
void log_message(LogLevel level, std::string_view message)
void debug(fmt::format_string< Args... > format, Args &&...args)
void log(LogLevel level, fmt::format_string< Args... > format, Args &&...args)
auto get_log_level() -> LogLevel
void set_log_level(LogLevel level)
void set_log_handler(LogHandler handler)
std::function< void(LogLevel level, std::string_view message)> LogHandler
void critical(fmt::format_string< Args... > format, Args &&...args)
auto should_log(LogLevel level) -> bool
void warn(fmt::format_string< Args... > format, Args &&...args)
void trace(fmt::format_string< Args... > format, Args &&...args)
void error(fmt::format_string< Args... > format, Args &&...args)
void info(fmt::format_string< Args... > format, Args &&...args)