|
| #define | VLINK_LOG_GET_DETAIL(level) |
| | Macro Definitions. More...
|
| |
| #define | VLINK_LOG_HEX(offset) std::hex, std::uppercase, std::setw(offset), std::setfill('0') |
| |
| #define | VLINK_LOG_HEXSS(offset) std::hex << std::uppercase << std::setw(offset) << std::setfill('0') |
| |
| #define | VLINK_LOG_IF_T VLinkLogger::is_writable(VLinkLogger::kTrace) |
| |
| #define | VLINK_LOG_IF_D VLinkLogger::is_writable(VLinkLogger::kDebug) |
| |
| #define | VLINK_LOG_IF_I VLinkLogger::is_writable(VLinkLogger::kInfo) |
| |
| #define | VLINK_LOG_IF_W VLinkLogger::is_writable(VLinkLogger::kWarn) |
| |
| #define | VLINK_LOG_IF_E VLinkLogger::is_writable(VLinkLogger::kError) |
| |
| #define | VLINK_LOG_IF_F VLinkLogger::is_writable(VLinkLogger::kFatal) |
| |
| #define | VLINK_LOG_T(...) VLinkLogger::print_stream_style<VLinkLogger::kTrace>(VLINK_LOG_GET_DETAIL(VLinkLogger::kTrace), __VA_ARGS__) |
| |
| #define | VLINK_LOG_D(...) VLinkLogger::print_stream_style<VLinkLogger::kDebug>(VLINK_LOG_GET_DETAIL(VLinkLogger::kDebug), __VA_ARGS__) |
| |
| #define | VLINK_LOG_I(...) VLinkLogger::print_stream_style<VLinkLogger::kInfo>(VLINK_LOG_GET_DETAIL(VLinkLogger::kInfo), __VA_ARGS__) |
| |
| #define | VLINK_LOG_W(...) VLinkLogger::print_stream_style<VLinkLogger::kWarn>(VLINK_LOG_GET_DETAIL(VLinkLogger::kWarn), __VA_ARGS__) |
| |
| #define | VLINK_LOG_E(...) VLinkLogger::print_stream_style<VLinkLogger::kError>(VLINK_LOG_GET_DETAIL(VLinkLogger::kError), __VA_ARGS__) |
| |
| #define | VLINK_LOG_F(...) VLinkLogger::print_stream_style<VLinkLogger::kFatal>(VLINK_LOG_GET_DETAIL(VLinkLogger::kFatal), __VA_ARGS__) |
| |
| #define | VLINK_MLOG_T(...) VLinkLogger::print_format_style<VLinkLogger::kTrace>(VLINK_LOG_GET_DETAIL(VLinkLogger::kTrace), __VA_ARGS__) |
| |
| #define | VLINK_MLOG_D(...) VLinkLogger::print_format_style<VLinkLogger::kDebug>(VLINK_LOG_GET_DETAIL(VLinkLogger::kDebug), __VA_ARGS__) |
| |
| #define | VLINK_MLOG_I(...) VLinkLogger::print_format_style<VLinkLogger::kInfo>(VLINK_LOG_GET_DETAIL(VLinkLogger::kInfo), __VA_ARGS__) |
| |
| #define | VLINK_MLOG_W(...) VLinkLogger::print_format_style<VLinkLogger::kWarn>(VLINK_LOG_GET_DETAIL(VLinkLogger::kWarn), __VA_ARGS__) |
| |
| #define | VLINK_MLOG_E(...) VLinkLogger::print_format_style<VLinkLogger::kError>(VLINK_LOG_GET_DETAIL(VLinkLogger::kError), __VA_ARGS__) |
| |
| #define | VLINK_MLOG_F(...) VLinkLogger::print_format_style<VLinkLogger::kFatal>(VLINK_LOG_GET_DETAIL(VLinkLogger::kFatal), __VA_ARGS__) |
| |
| #define | VLINK_CLOG_T(...) VLinkLogger::print_c_style<VLinkLogger::kTrace>(VLINK_LOG_GET_DETAIL(VLinkLogger::kTrace), __VA_ARGS__) |
| |
| #define | VLINK_CLOG_D(...) VLinkLogger::print_c_style<VLinkLogger::kDebug>(VLINK_LOG_GET_DETAIL(VLinkLogger::kDebug), __VA_ARGS__) |
| |
| #define | VLINK_CLOG_I(...) VLinkLogger::print_c_style<VLinkLogger::kInfo>(VLINK_LOG_GET_DETAIL(VLinkLogger::kInfo), __VA_ARGS__) |
| |
| #define | VLINK_CLOG_W(...) VLinkLogger::print_c_style<VLinkLogger::kWarn>(VLINK_LOG_GET_DETAIL(VLinkLogger::kWarn), __VA_ARGS__) |
| |
| #define | VLINK_CLOG_E(...) VLinkLogger::print_c_style<VLinkLogger::kError>(VLINK_LOG_GET_DETAIL(VLinkLogger::kError), __VA_ARGS__) |
| |
| #define | VLINK_CLOG_F(...) VLinkLogger::print_c_style<VLinkLogger::kFatal>(VLINK_LOG_GET_DETAIL(VLinkLogger::kFatal), __VA_ARGS__) |
| |
| #define | VLINK_SLOG_T VLinkLogger::WrapperStream<VLinkLogger::kTrace>(VLINK_LOG_GET_DETAIL(VLinkLogger::kTrace)) |
| |
| #define | VLINK_SLOG_D VLinkLogger::WrapperStream<VLinkLogger::kDebug>(VLINK_LOG_GET_DETAIL(VLinkLogger::kDebug)) |
| |
| #define | VLINK_SLOG_I VLinkLogger::WrapperStream<VLinkLogger::kInfo>(VLINK_LOG_GET_DETAIL(VLinkLogger::kInfo)) |
| |
| #define | VLINK_SLOG_W VLinkLogger::WrapperStream<VLinkLogger::kWarn>(VLINK_LOG_GET_DETAIL(VLinkLogger::kWarn)) |
| |
| #define | VLINK_SLOG_E VLinkLogger::WrapperStream<VLinkLogger::kError>(VLINK_LOG_GET_DETAIL(VLinkLogger::kError)) |
| |
| #define | VLINK_SLOG_F VLinkLogger::WrapperStream<VLinkLogger::kFatal>(VLINK_LOG_GET_DETAIL(VLinkLogger::kFatal)) |
| |
| #define | VLOG_T(...) VLINK_LOG_T(__VA_ARGS__) |
| |
| #define | VLOG_D(...) VLINK_LOG_D(__VA_ARGS__) |
| |
| #define | VLOG_I(...) VLINK_LOG_I(__VA_ARGS__) |
| |
| #define | VLOG_W(...) VLINK_LOG_W(__VA_ARGS__) |
| |
| #define | VLOG_E(...) VLINK_LOG_E(__VA_ARGS__) |
| |
| #define | VLOG_F(...) VLINK_LOG_F(__VA_ARGS__) |
| |
| #define | CLOG_T(...) VLINK_CLOG_T(__VA_ARGS__) |
| |
| #define | CLOG_D(...) VLINK_CLOG_D(__VA_ARGS__) |
| |
| #define | CLOG_I(...) VLINK_CLOG_I(__VA_ARGS__) |
| |
| #define | CLOG_W(...) VLINK_CLOG_W(__VA_ARGS__) |
| |
| #define | CLOG_E(...) VLINK_CLOG_E(__VA_ARGS__) |
| |
| #define | CLOG_F(...) VLINK_CLOG_F(__VA_ARGS__) |
| |
| #define | MLOG_T(...) VLINK_MLOG_T(__VA_ARGS__) |
| |
| #define | MLOG_D(...) VLINK_MLOG_D(__VA_ARGS__) |
| |
| #define | MLOG_I(...) VLINK_MLOG_I(__VA_ARGS__) |
| |
| #define | MLOG_W(...) VLINK_MLOG_W(__VA_ARGS__) |
| |
| #define | MLOG_E(...) VLINK_MLOG_E(__VA_ARGS__) |
| |
| #define | MLOG_F(...) VLINK_MLOG_F(__VA_ARGS__) |
| |
| #define | SLOG_T VLINK_SLOG_T |
| |
| #define | SLOG_D VLINK_SLOG_D |
| |
| #define | SLOG_I VLINK_SLOG_I |
| |
| #define | SLOG_W VLINK_SLOG_W |
| |
| #define | SLOG_E VLINK_SLOG_E |
| |
| #define | SLOG_F VLINK_SLOG_F |
| |
Singleton logger with stream / format / printf / RAII-stream entry points.
vlink::Logger is the central logging facility. A single instance is constructed via Logger::init and reused for the rest of the process; each call routes through a console sink and an optional file sink whose minimum levels are independently configurable.
- Entry point cheat sheet
| Style | Macro family | Backing API | Argument shape |
| Stream | VLOG_x | FastStream operator<< | VLOG_I("x=", x, " y=", y) |
| Placeholder | MLOG_x | vlink::format::format_to_n | MLOG_W("x={} y={}", x, y) |
| printf | CLOG_x | std::snprintf | CLOG_E("errno=%d", err) |
| RAII stream | SLOG_x | WrapperStream | SLOG_D << "a=" << a |
- Severity ladder
| Value | Name | Use case |
| 0 | kTrace | Verbose internals |
| 1 | kDebug | Developer diagnostics |
| 2 | kInfo | Normal operational messages |
| 3 | kWarn | Unusual but recoverable conditions |
| 4 | kError | Errors that may affect operation |
| 5 | kFatal | Unrecoverable; throws RuntimeError |
| 6 | kOff | Disables the corresponding sink |
- ASCII priority diagram
* higher severity -> kFatal (throws)
* kError
* kWarn <- kDetailLevel (default): adds {file:line}
* kInfo
* kDebug
* kTrace
* lower severity -> kOff (sink disabled)
* - Compile-time gating
VLINK_LOG_LEVEL =N strips levels below N at compile time (zero overhead).
VLINK_LOG_DETAIL_LEVEL =N changes the level at which file/line is appended.
VLINK_LOG_DISABLE_SHORT removes the VLOG_* / MLOG_* / CLOG_* / SLOG_* aliases.
- Formatting cheat sheet
- Example
VLOG_I(
"node started, id=", node_id);
MLOG_W(
"temperature is {} C", temp);
SLOG_D <<
"values: " << a <<
" " << b;
static void set_console_level(Level level) noexcept
Sets the minimum severity for the console sink; pass kOff to mute it.
@ kInfo
Normal operational message.
Definition: logger.h:147
static void init(const std::string &app_name="", const std::string &log_path="") noexcept
Initialises the logger singleton.
#define CLOG_E(...)
Definition: logger.h:801
#define SLOG_D
Definition: logger.h:819
#define VLOG_I(...)
Definition: logger.h:785
#define MLOG_W(...)
Definition: logger.h:811
- Note
kFatal messages call Logger::flush and then throw Exception::RuntimeError so the application can perform a controlled shutdown. Backends include spdlog, quill, DLT, Android logcat, QNX slog2 and kmsg depending on build options.