/** * @file logging.h * @brief Functions for logging. */ #ifndef LK_LOGGING_H #define LK_LOGGING_H #include #include /** * Logging function which uses @ref lk_ctx::log_fn "log_fn" and * @ref lk_ctx::log_data "log_data" to write log messages. * @param ctx is a keymap library context. * @param priority indicates the priority. */ void lk_log(struct lk_ctx *ctx, int priority, const char *file, int line, const char *fn, const char *fmt, ...); #define lk_log_cond(ctx, level, arg...) \ do { \ if (ctx->log_priority >= level) \ lk_log(ctx, level, __FILE__, __LINE__, __func__, ##arg); \ } while (0) /** * Wrapper to output debug-level messages * @param ctx is a keymap library context. * @param arg is output message. */ #define DBG(ctx, arg...) lk_log_cond(ctx, LOG_DEBUG, ##arg) /** * Wrapper to output informational messages * @param ctx is a keymap library context. * @param arg is output message. */ #define INFO(ctx, arg...) lk_log_cond(ctx, LOG_INFO, ##arg) /** * Wrapper to output warning conditions * @param ctx is a keymap library context. * @param arg is output message. */ #define WARN(ctx, arg...) lk_log_cond(ctx, LOG_WARNING, ##arg) /** * Wrapper to output error conditions * @param ctx is a keymap library context. * @param arg is output message. */ #define ERR(ctx, arg...) lk_log_cond(ctx, LOG_ERR, ##arg) #endif /* LK_LOGGING_H */