26 using Clock = std::chrono::system_clock;
27 Clock::time_point lastUpdate_;
28 std::chrono::milliseconds refreshRate_;
31 explicit Logger(
int level, FILE* out = stderr)
32 : out_(
out), level_(level), lastUpdate_(Clock::now()),
37 return level <= level_;
40 template <
typename... Args>
45 std::lock_guard<std::mutex> lock(mutex_);
46 std::fprintf(out_,
fmt, args...);
49 template <
typename... Args>
50 void update(
int level,
const char *
fmt, Args... args) {
54 std::lock_guard<std::mutex> lock(mutex_);
55 auto now = Clock::now();
56 if (now - lastUpdate_ > refreshRate_) {
58 std::fprintf(out_,
"\r");
59 std::fprintf(out_,
fmt, args...);
67 std::lock_guard<std::mutex> lock(mutex_);
68 std::fprintf(out_,
"\r%79s\r",
"");
void update(int level, const char *fmt, Args... args)
Definition Logging.h:50
Logger(int level, FILE *out=stderr)
Definition Logging.h:31
bool logsAt(int level)
Definition Logging.h:36
void operator()(int level, const char *fmt, Args... args)
Definition Logging.h:41
void clear(int level)
Definition Logging.h:63
Definition ErrorHolder.h:16
constexpr int kLogVerbose
Definition Logging.h:19
constexpr int kLogDebug
Definition Logging.h:18
constexpr int kLogError
Definition Logging.h:16
constexpr int kLogInfo
Definition Logging.h:17
const lzma_allocator const uint8_t size_t uint8_t * out
Definition block.h:528
const char * fmt
Definition message.h:50