Introduction
Indentlog provides is a logging library that autoindents to reveal the calling program’s call graph.
Features
Indenting Nesting level and is consistent with program structure.
Pretty-Printer Includes configurable, general-purpose pretty-printer.
Efficient Uses custom streambuf for efficiency. Avoids executing code to assemble input values that would be discarded below currently configured logging level
Configurable configure from global configuration object logconfig.
Thread-aware logging state is accessed from thread-local variables. Logging for different threads is assembled in thread-local state for improved concurrency.
Colorized generate colorized output, depending on configuration.
Examples
#include "xo/indentlog/scope.hpp"
using namespace xo;
void inner(int x) {
scope log(XO_ENTER0(always), ":x ", x);
}
void outer(int y) {
scope log(XO_ENTER0(always), ":y ", y);
inner(2*y);
}
int
main(int argc, char ** argv) {
outer(123);
}
output:
15:28:35.702611 +(0) outer :y 123 [ex1.cpp:12]
15:28:35.702723 +(1) inner :x 246 [ex1.cpp:8]
15:28:35.702737 -(1) inner
15:28:35.702760 -(0) outer