diff --git a/src/util-logger.c b/src/util-logger.c index f26a115..d437be7 100644 --- a/src/util-logger.c +++ b/src/util-logger.c @@ -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); } diff --git a/src/util-logger.h b/src/util-logger.h index bbf569f..b456423 100644 --- a/src/util-logger.h +++ b/src/util-logger.h @@ -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); diff --git a/test/eierpecken.c b/test/eierpecken.c index 10bd16f..07ab9d0 100644 --- a/test/eierpecken.c +++ b/test/eierpecken.c @@ -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 = ""; + msgtype = xstrdup(""); break; }