Elektra  0.8.21
How-To: Logging

Step by Step Guide

Preparation

  1. Import the logging library in your code:
#include <kdblogger.h>
  1. Insert logging statements:
ELEKTRA_LOG("Hello, %s!", "🌎");

Log Everything

If Elektra should display all log messages, then please follow the steps below.

  1. Uncomment the line:
// #define NO_FILTER

in the file src/libs/elektra/log.c.

  1. Optional: Change the debug level in src/include/kdblogger.h. For example, if you want to see debug messages too, then change the line

to

File Specific Logging

If you want to only log messages below a specific directory prefix, then please follow the steps below.

  1. Search for the code:
#ifndef NO_FILTER
// XXX Filter level …
#endif

in the file src/libs/elektra/log.c.

  1. Replace the code with something like:
#ifndef NO_FILTER
if (strncmp (file, "src/postfix/", sizeof ("src/postfix"))) goto end;
#endif

, where src/postfix contains all source files with logging statements that Elektra should log. For example, if you want to log everything from the yamlcpp plugin, then use the following code.

#ifndef NO_FILTER
if (strncmp (file, "src/plugins/yamlcpp/", sizeof ("src/plugins/yamlcpp"))) goto end;
#endif

Compilation

  1. Enable the logger: e.g. run cmake with the switch -DENABLE_LOGGER=ON
  2. Build Elektra

Log Levels

There are four log levels (ERROR is reserved for aborts within ELEKTRA_ASSERT):