Logging facilities¶
Cahute has logging facilities for its internal needs, which functions with logging levels.
Every log is accompanied with a level, among the following:
info(CAHUTE_LOGLEVEL_INFO): debug messages, e.g. packet contents or activated behaviour tweaks that have been encountered.warning(CAHUTE_LOGLEVEL_WARNING): messages signifying abnormal behaviours that are recoverable and recovered by the library.error(CAHUTE_LOGLEVEL_ERROR): messages signifying abnormal behaviours that are not recoverable, and may cause link termination, or termination of a specific flow.fatal(CAHUTE_LOGLEVEL_FATAL): messages signifying program termination, e.g. due to catastrophic system-related incidents.
Logging messages are printed on standard error if their level is allowed to be printed.
Note
There is no way currently to reroute these logs to another output than standard error. If the need arises, this may change.
Whether messages for a given logging level are printed or not can be controlled from the outside, by setting the current “logging level”. Messages for a logging level can be printed if they are at the same or of higher importance than the currently configured logging level for the library, i.e. if they are on the same line or below in the list presented above.
By that rationale:
If the currently configured logging level is
info, then messages will be displayed for all logging levels, sinceinfohas the lowest importance.If the currently configured logging level is
warning, then messages will be displayed for thewarning,errorandfatallogging level only.If the currently configured logging level is
error, then messages will be displayed for theerrorandfatallogging levels only.If the currently configured logging level is
fatal, then messages will be displayed for thefatallogging level only.
There is a special logging level none (CAHUTE_LOGLEVEL_NONE)
that, if configured, will not let any log be printed.
As a library user, the current logging level can be gathered using
cahute_get_log_level(), and can be set using
cahute_set_log_level().
As a command-line user, some command-line utilities support an -l and/or
--log option to set the current logging level for the library.