73 using Callback = void(*)(
LogLevel level,
const char* msg);
94 static LogLevel getMinLevel() {
return minLevel(); }
101 minLevel() = min_level;
103 if (level >= Logger::minLevel()) {
104 fprintf(stderr,
"[fzgmod:%s] %s\n", levelTag(level), msg);
116 if (!callback())
return;
117 if (level < minLevel())
return;
121 vsnprintf(buf,
sizeof(buf), fmt, args);
123 callback()(level, buf);
134 static void print(
const char* fmt, ...) {
138 vsnprintf(buf,
sizeof(buf), fmt, args);
141 callback()(LogLevel::INFO, buf);
147 static const char* levelTag(
LogLevel l) {
149 case LogLevel::TRACE:
return "TRACE";
150 case LogLevel::DEBUG:
return "DEBUG";
151 case LogLevel::INFO:
return "INFO";
152 case LogLevel::WARN:
return "WARN";
153 default:
return "???";
158 static Callback& callback() {
159 static Callback cb =
nullptr;
163 static LogLevel lvl = LogLevel::INFO;
180#ifndef FZ_LOG_MIN_LEVEL
181# define FZ_LOG_MIN_LEVEL 2
186# undef FZ_LOG_MIN_LEVEL
187# define FZ_LOG_MIN_LEVEL 255
201#define FZ_LOG(level, ...) \
203 if constexpr (static_cast<int>(::fz::LogLevel::level) >= \
204 static_cast<int>(FZ_LOG_MIN_LEVEL)) { \
205 ::fz::Logger::log(::fz::LogLevel::level, __VA_ARGS__); \
218#define FZ_PRINT(...) ::fz::Logger::print(__VA_ARGS__)
static void setCallback(Callback cb)
Definition log.h:82
static void log(LogLevel level, const char *fmt,...)
Definition log.h:115
static void enableStderr(LogLevel min_level=LogLevel::INFO)
Definition log.h:100
static void setMinLevel(LogLevel level)
Definition log.h:93
static void print(const char *fmt,...)
Definition log.h:134
LogLevel
Definition log.h:49
@ TRACE
Per-stage execute(), per-chunk details — very verbose.
@ WARN
Unexpected but recoverable: outlier overflow, fallbacks.
@ INFO
High-level milestones: finalize, compress, decompress.
@ SILENT
Compile-time sentinel — do not pass to log()
@ DEBUG
Pipeline construction, buffer allocation, data stats.