Schematika tokenizer (facet object model version)
  • C++ 96.6%
  • CMake 3.4%
Find a file
2023-09-15 16:41:18 -04:00
cmake build: bugfix: missed commit nestlog.cmake 2023-09-12 12:23:32 -04:00
example nestlog: + time-of-day column 2023-09-15 16:30:34 -04:00
include/nestlog nestlog: refactor: streamline indenting for lhs timestamp 2023-09-15 16:41:18 -04:00
CMakeLists.txt build: include paths (for lsp integration) 2023-09-12 12:24:05 -04:00
README.md tweak example 2 output 2023-09-11 16:37:50 -04:00

nestlog -- logging with automatic indenting according to call graph

Nestlog is a lightweight header-only library for console logging.

Examples

1

/* examples/ex1/ex1.cpp */

#include "nestlog/scope.hpp"

void A(int x) {
    XO_SCOPE(log);  // i.e. xo::scope log("A");

    log("enter ", ":x ", x);
}

int
main(int argc, char ** argv) {
    A(66);
}

output:

+A
 enter :x 66
-A

2

/* examples ex2/ex2.cpp */

#include "nestlog/scope.hpp"

int
fib(int n) {
    XO_SCOPE(log);

    int retval = 1;

    if (n >= 2) {
        log(":n ", n);
        retval = fib(n - 1) + fib(n - 2);
    }

    log(":n ", n, " -> :retval ", retval);

    return retval;
}

int
main(int argc, char ** argv) {
  XO_SCOPE(log);

   int n = 4;
  int fn = fib(n);

  log(":n ", n, " :fib(n) ", fn);
}

output:

+main
 +fib
  :n 4
  +fib
   :n 3
   +fib
    :n 2
    +fib
     :n 1 -> :retval 1
    -fib
    +fib
     :n 0 -> :retval 1
    -fib
    :n 2 -> :retval 2
   -fib
   +fib
    :n 1 -> :retval 1
   -fib
   :n 3 -> :retval 3
  -fib
  +fib
   :n 2
   +fib
    :n 1 -> :retval 1
   -fib
   +fib
    :n 0 -> :retval 1
   -fib
   :n 2 -> :retval 2
  -fib
  :n 4 -> :retval 5
 -fib
 :n 4 :fib(n) 5
-main