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) {
118template <>
struct formatter<
ReUseX::core::stopwatch> : formatter<double> {
119 template <
typename FormatContext>
121 return formatter<double>::format(sw.
elapsed(), ctx);
auto elapsed() const -> double
void error(fmt::format_string< Args... > format, Args &&...args)
std::function< void(LogLevel level, std::string_view message)> LogHandler
void info(fmt::format_string< Args... > format, Args &&...args)
void set_log_handler(LogHandler handler)
void set_log_level(LogLevel level)
void log(LogLevel level, fmt::format_string< Args... > format, Args &&...args)
void log_message(LogLevel level, std::string_view message)
auto should_log(LogLevel level) -> bool
void critical(fmt::format_string< Args... > format, Args &&...args)
auto get_log_level() -> LogLevel
void debug(fmt::format_string< Args... > format, Args &&...args)
void warn(fmt::format_string< Args... > format, Args &&...args)
void trace(fmt::format_string< Args... > format, Args &&...args)