Write text to console or file. More...
Modules | |
File logger | |
A logger that writes messages to a file. | |
Data Structures | |
struct | bio_logger_t |
Handle to a logger. More... | |
struct | bio_log_options_t |
Logging options. More... | |
struct | bio_log_ctx_t |
Context for a log function. More... | |
Macros | |
#define | BIO_LOG(LEVEL, ...) (BIO_FORMAT_CHECK(__VA_ARGS__), bio_log(LEVEL, __FILE__, __LINE__, __VA_ARGS__)) |
Log a message at a given log level. | |
#define | BIO_TRACE(...) BIO_LOG(BIO_LOG_LEVEL_TRACE, __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_TRACE level. | |
#define | BIO_DEBUG(...) BIO_LOG(BIO_LOG_LEVEL_DEBUG, __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_DEBUG level. | |
#define | BIO_INFO(...) BIO_LOG(BIO_LOG_LEVEL_INFO , __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_DEBUG level. | |
#define | BIO_WARN(...) BIO_LOG(BIO_LOG_LEVEL_WARN , __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_WARN level. | |
#define | BIO_ERROR(...) BIO_LOG(BIO_LOG_LEVEL_ERROR, __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_ERROR level. | |
#define | BIO_FATAL(...) BIO_LOG(BIO_LOG_LEVEL_FATAL, __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_FATAL level. | |
#define | BIO_ERROR_FMT "%s (%s[%d]) (from %s:%d)" |
Helper for logging a bio_error_t. | |
#define | BIO_ERROR_FMT_ARGS(error) |
Helper for logging a bio_error_t. | |
Typedefs | |
typedef void(* | bio_log_fn_t) (void *userdata, const bio_log_ctx_t *ctx, const char *msg) |
A log callback. | |
Enumerations | |
enum | bio_log_level_t { BIO_LOG_LEVEL_TRACE , BIO_LOG_LEVEL_DEBUG , BIO_LOG_LEVEL_INFO , BIO_LOG_LEVEL_WARN , BIO_LOG_LEVEL_ERROR , BIO_LOG_LEVEL_FATAL } |
Log levels. More... | |
Functions | |
void | bio_log (bio_log_level_t level, const char *file, int line, const char *fmt,...) |
Raw logging function. | |
bio_logger_t | bio_add_logger (bio_log_level_t min_level, bio_log_fn_t log_fn, void *userdata) |
Add a new logger. | |
void | bio_remove_logger (bio_logger_t logger) |
Remove a previously configured logger. | |
void | bio_set_min_log_level (bio_logger_t logger, bio_log_level_t level) |
Change the minimum log level for a given logger. | |
Write text to console or file.
There are several logging macros that should be used instead of the raw bio_log function.
#define BIO_DEBUG | ( | ... | ) | BIO_LOG(BIO_LOG_LEVEL_DEBUG, __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_DEBUG level.
#define BIO_ERROR | ( | ... | ) | BIO_LOG(BIO_LOG_LEVEL_ERROR, __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_ERROR level.
#define BIO_ERROR_FMT "%s (%s[%d]) (from %s:%d)" |
Helper for logging a bio_error_t.
Example:
#define BIO_ERROR_FMT_ARGS | ( | error | ) |
Helper for logging a bio_error_t.
#define BIO_FATAL | ( | ... | ) | BIO_LOG(BIO_LOG_LEVEL_FATAL, __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_FATAL level.
#define BIO_INFO | ( | ... | ) | BIO_LOG(BIO_LOG_LEVEL_INFO , __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_DEBUG level.
#define BIO_LOG | ( | LEVEL, | |
... | |||
) | (BIO_FORMAT_CHECK(__VA_ARGS__), bio_log(LEVEL, __FILE__, __LINE__, __VA_ARGS__)) |
Log a message at a given log level.
LEVEL | a bio_log_level_t |
... | The log message. This can use a printf-like format string |
#define BIO_TRACE | ( | ... | ) | BIO_LOG(BIO_LOG_LEVEL_TRACE, __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_TRACE level.
#define BIO_WARN | ( | ... | ) | BIO_LOG(BIO_LOG_LEVEL_WARN , __VA_ARGS__) |
Log a message at BIO_LOG_LEVEL_WARN level.
typedef void(* bio_log_fn_t) (void *userdata, const bio_log_ctx_t *ctx, const char *msg) |
A log callback.
This will be called for every message passed to bio_log.
ctx
and msg
set to NULL
instead. The callback should perform cleanup or "flush" buffered messages.userdata | Arbitrary user data |
ctx | Log context |
msg | Log message |
enum bio_log_level_t |
bio_logger_t bio_add_logger | ( | bio_log_level_t | min_level, |
bio_log_fn_t | log_fn, | ||
void * | userdata | ||
) |
Add a new logger.
The logger will run in its own daemon coroutine.
bio will automatically call bio_remove_logger on all loggers when bio_terminate is called. This will terminate the daemon coroutine.
min_level | Minimum log level for this logger |
log_fn | The log function |
userdata | Arbitrary data passed to the log function for every message |
void bio_log | ( | bio_log_level_t | level, |
const char * | file, | ||
int | line, | ||
const char * | fmt, | ||
... | |||
) |
Raw logging function.
Use the logging macros instead.
void bio_remove_logger | ( | bio_logger_t | logger | ) |
Remove a previously configured logger.
The log function will be called with NULL
arguments, except for userdata
. This allows it to have a final chance to "flush" all buffered messages.
void bio_set_min_log_level | ( | bio_logger_t | logger, |
bio_log_level_t | level | ||
) |
Change the minimum log level for a given logger.