Fork us on GitHub Follow us on Facebook Follow us on Twitter

Version 1 (modified by Vojtech Horky, 9 years ago) (diff)

First version

Logging functions in HelenOS

If you want to add logging to your application, you can use already existing functions in libc. Currently, the implementation is trivial as the messages are only printed to the screen but using single API allows for further improvements (logging to file/over network etc.).

To use logging functions, include io/log.h and initialize the logging subsystem. After that, you can use the log_msg to do the logging.

#include <io/log.h>

#define NAME "myapp"

int main(int argc, char *argv[])
    log_init(NAME, LVL_NOTE);
    if (rc != EOK) {
        log_msg(LVL_ERROR, "Something failed (rc=%d), trying fallback...", rc);

The first argument to log_init is application name, the second is the default logging level. Messages with higher level won't be printed at all.

log_msg is a printf-like function where first argument is level of the message (its seriousness).

Currently, following levels are recognised.

Name Typical usage
LVL_FATAL Fatal error, program is not able to recover at all.
LVL_ERROR Serious error but the program can recover from it.
E.g. driver cannot control one device but otherwise is healthy.
LVL_WARN Easily recoverable problem, such as one corrupted packet that can be skipped.
LVL_NOTE Notice of higher importance to the user, such as discovery of a new device.
LVL_DEBUG Debugging-purpose message.
LVL_DEBUG2 More detailed debugging message.