mirror of
https://gitlab.freedesktop.org/libinput/libei.git
synced 2026-01-04 21:20:16 +01:00
util: pass the file/line/func information through to the logger
This is useful for debugging, let's pass it through and let the log handler decide whether to use it or not. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
b527128c27
commit
7f4c8b8247
3 changed files with 22 additions and 13 deletions
|
|
@ -43,6 +43,7 @@ static void
|
|||
logger_default_log_func(struct logger *logger,
|
||||
const char *prefix,
|
||||
enum logger_priority priority,
|
||||
const char *file, int lineno, const char *func,
|
||||
const char *format, va_list args)
|
||||
{
|
||||
const char *msgtype;
|
||||
|
|
@ -65,22 +66,26 @@ logger_default_log_func(struct logger *logger,
|
|||
void
|
||||
log_msg_va(struct logger *logger,
|
||||
enum logger_priority priority,
|
||||
const char *file, int lineno, const char *func,
|
||||
const char *format,
|
||||
va_list args)
|
||||
{
|
||||
if (logger->handler && logger->priority <= priority)
|
||||
logger->handler(logger, logger->prefix, priority, format, args);
|
||||
logger->handler(logger, logger->prefix,
|
||||
priority, file, lineno, func,
|
||||
format, args);
|
||||
}
|
||||
|
||||
void
|
||||
log_msg(struct logger *logger,
|
||||
enum logger_priority priority,
|
||||
const char *file, int lineno, const char *func,
|
||||
const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, format);
|
||||
log_msg_va(logger, priority, format, args);
|
||||
log_msg_va(logger, priority, file, lineno, func, format, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,30 +41,33 @@ enum logger_priority {
|
|||
typedef void (*logger_log_func_t)(struct logger *logger,
|
||||
const char *prefix,
|
||||
enum logger_priority priority,
|
||||
const char *file, int lineno, const char *func,
|
||||
const char *format, va_list args);
|
||||
|
||||
void
|
||||
log_msg(struct logger *logger,
|
||||
enum logger_priority priority,
|
||||
const char *file, int lineno, const char *func,
|
||||
const char *format, ...);
|
||||
|
||||
void
|
||||
log_msg_va(struct logger *logger,
|
||||
enum logger_priority priority,
|
||||
const char *file, int lineno, const char *func,
|
||||
const char *format,
|
||||
va_list args);
|
||||
|
||||
/* log helpers. The struct T_ needs to have a field called 'logger' */
|
||||
#define log_debug(T_, ...) \
|
||||
log_msg((T_)->logger, LOGGER_DEBUG, __VA_ARGS__)
|
||||
log_msg((T_)->logger, LOGGER_DEBUG, __FILE__, __LINE__, __func__, __VA_ARGS__)
|
||||
#define log_info(T_, ...) \
|
||||
log_msg((T_)->logger, LOGGER_INFO, __VA_ARGS__)
|
||||
log_msg((T_)->logger, LOGGER_INFO, __FILE__, __LINE__, __func__, __VA_ARGS__)
|
||||
#define log_warn(T_, ...) \
|
||||
log_msg((T_)->logger, LOGGER_WARN, __VA_ARGS__)
|
||||
log_msg((T_)->logger, LOGGER_WARN, __FILE__, __LINE__, __func__, __VA_ARGS__)
|
||||
#define log_error(T_, ...) \
|
||||
log_msg((T_)->logger, LOGGER_ERROR, __VA_ARGS__)
|
||||
log_msg((T_)->logger, LOGGER_ERROR, __FILE__, __LINE__, __func__, __VA_ARGS__)
|
||||
#define log_bug(T_, ...) \
|
||||
log_msg((T_)->logger, LOGGER_ERROR, "bug: " __VA_ARGS__)
|
||||
log_msg((T_)->logger, LOGGER_ERROR, __FILE__, __LINE__, __func__, "bug: " __VA_ARGS__)
|
||||
|
||||
struct logger *
|
||||
logger_new(const char *prefix, void *user_data);
|
||||
|
|
|
|||
|
|
@ -262,17 +262,18 @@ static void
|
|||
peck_log_handler(struct logger *logger,
|
||||
const char *prefix,
|
||||
enum logger_priority priority,
|
||||
const char *file, int lineno, const char *func,
|
||||
const char *format, va_list args)
|
||||
{
|
||||
const char *msgtype;
|
||||
_cleanup_free_ char *msgtype;
|
||||
|
||||
switch(priority) {
|
||||
case LOGGER_DEBUG: msgtype = " "; break;
|
||||
case LOGGER_INFO: msgtype = "INF"; break;
|
||||
case LOGGER_WARN: msgtype = "WRN"; break;
|
||||
case LOGGER_ERROR: msgtype = "ERR"; break;
|
||||
case LOGGER_DEBUG: msgtype = xaprintf("%3d", lineno); break;
|
||||
case LOGGER_INFO: msgtype = xstrdup("INF"); break;
|
||||
case LOGGER_WARN: msgtype = xstrdup("WRN"); break;
|
||||
case LOGGER_ERROR: msgtype = xstrdup("ERR"); break;
|
||||
default:
|
||||
msgtype = "<invalid msgtype>";
|
||||
msgtype = xstrdup("<invalid msgtype>");
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue