Scroll to navigation

doc_dev_logging_md(3elektra) Elektra doc_dev_logging_md(3elektra)

NAME

doc_dev_logging_md - How-To: Logging

Step by Step Guide

Preparation

1.
Import the logging library in your code:

#include <kdblogger.h>
2.
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.

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

ELEKTRA_LOG_LEVEL = ELEKTRA_LOG_LEVEL_INFO,

to

ELEKTRA_LOG_LEVEL = ELEKTRA_LOG_LEVEL_DEBUG,

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.

2.
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):

  • ELEKTRA_LOG_WARNING, something critical that should be shown to the user (e.g. API misuse), see ELEKTRA_LOG_LEVEL_WARNING
  • ELEKTRA_LOG_NOTICE, something important developers are likely interested in, see ELEKTRA_LOG_LEVEL_NOTICE
  • ELEKTRA_LOG, standard level gives information what the code is doing without flooding the log, see ELEKTRA_LOG_LEVEL_INFO
  • ELEKTRA_LOG_DEBUG, for less important logs, see ELEKTRA_LOG_LEVEL_DEBUG
Mon Jan 15 2018 Version 0.8.20