58 using Callback = void(*)(
LogLevel level,
const char* msg);
67 static void setCallback(Callback cb) { callback() = cb; }
78 static void setMinLevel(
LogLevel level) { minLevel() = level; }
79 static LogLevel getMinLevel() {
return minLevel(); }
86 minLevel() = min_level;
87 setCallback([](
LogLevel level,
const char* msg) {
88 if (level >= Logger::minLevel()) {
89 fprintf(stderr,
"[fzgmod:%s] %s\n", levelTag(level), msg);
100 static void log(
LogLevel level,
const char* fmt, ...) {
101 if (!callback())
return;
102 if (level < minLevel())
return;
106 vsnprintf(buf,
sizeof(buf), fmt, args);
108 callback()(level, buf);
119 static void print(
const char* fmt, ...) {
123 vsnprintf(buf,
sizeof(buf), fmt, args);
132 static const char* levelTag(
LogLevel l) {
138 default:
return "???";
143 static Callback& callback() {
144 static Callback cb =
nullptr;
165#ifndef FZ_LOG_MIN_LEVEL
166# define FZ_LOG_MIN_LEVEL 2
171# undef FZ_LOG_MIN_LEVEL
172# define FZ_LOG_MIN_LEVEL 255
186#define FZ_LOG(level, ...) \
188 if constexpr (static_cast<int>(::fz::LogLevel::level) >= \
189 static_cast<int>(FZ_LOG_MIN_LEVEL)) { \
190 ::fz::Logger::log(::fz::LogLevel::level, __VA_ARGS__); \
203#define FZ_PRINT(...) ::fz::Logger::print(__VA_ARGS__)
Definition fzm_format.h:25
LogLevel
Definition log.h:46
@ 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.