System Logging API

This API offers a bunch of LOG_* functions that, with the default implementation, just use printf, but honor a verbosity level.

If desired, it is possible to implement a log module which then will be used instead the default printf-based implementation. In order to do so, the log module has to

  1. provide “log_module.h”
  2. have a name starting with log_ or depend on the pseudo-module LOG,
  3. implement log_write()
enum KUBOS_CORE_LOG::KLogLevel

Defined log levels.

These are the logging levels a user can choose. The idea is to set LOG_LEVEL to one of these values in the application’s Makefile. That will restrict output of log statements to those with equal or lower log level.

The default log level is LOG_INFO, which will print every message.

The log function calls of filtered messages will be optimized out at compile time, so a lower log level might result in smaller code size.

Values:

LOG_NONE

Lowest log level, will output nothing.

LOG_ERROR

Error log level, will print only critical, non-recoverable errors like hardware initialization failures.

LOG_WARNING

Warning log level, will print warning messages for temporary errors.

LOG_TELEMETRY

Special level for telemetry.

LOG_INFO

Informational log level, will print purely informational messages like successful system bootup, network link state, ...

LOG_DEBUG

Debug log level, printing developer stuff considered too verbose for production use.

LOG_ALL

Print everything.

LOG_LEVEL LOG_INFO

Default log level define.

LOG(level, ...) if (level <= LOG_LEVEL) log_write(level, __VA_ARGS__)

Log message if level <= LOG_LEVEL.

LOG_ERROR(...) LOG(LOG_ERROR, __VA_ARGS__)

Error logging define for convenience.

LOG_WARNING(...) LOG(LOG_WARNING, __VA_ARGS__)

Warning logging define for convenience.

LOG_TELEMETRY(...) LOG(LOG_TELEMETRY, __VA_ARGS__)

Telemetry logging define for convenience.

LOG_INFO(...) LOG(LOG_INFO, __VA_ARGS__)

Info logging define for convenience.

LOG_DEBUG(...) LOG(LOG_DEBUG, __VA_ARGS__)

Debug logging define for convenience.

log_write(level, ...) printf(__VA_ARGS__)

Default log_write function, just maps to printf.