Skip to content

Commit

Permalink
mx_log: Add mx_logva*() to use va lists when logging
Browse files Browse the repository at this point in the history
  • Loading branch information
mariux committed Oct 26, 2015
1 parent 8b36941 commit 68e8a19
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
17 changes: 13 additions & 4 deletions mx_log.c
Original file line number Diff line number Diff line change
Expand Up @@ -137,12 +137,11 @@ static int log_log(int level, int loglevel, char *file, unsigned long line, cons
return mx_log_printf("%s%s", prefix, msg);
}

int mx_log_do(int level, char *file, unsigned long line, const char *func, const char *fmt, ...)
int mx_logva_do(int level, char *file, unsigned long line, const char *func, const char *fmt, va_list ap)
{
int loglevel;
int len;
char *msg = NULL;
va_list ap;
int res;
int preserved_errno = errno;

Expand All @@ -153,9 +152,7 @@ int mx_log_do(int level, char *file, unsigned long line, const char *func, const
return 0;
}

va_start(ap, fmt);
len = vasprintf(&msg, fmt, ap);
va_end(ap);

if (len == -1) {
errno = preserved_errno;
Expand All @@ -173,6 +170,18 @@ int mx_log_do(int level, char *file, unsigned long line, const char *func, const
return res;
}

int mx_log_do(int level, char *file, unsigned long line, const char *func, const char *fmt, ...)
{
va_list ap;
int res;

va_start(ap, fmt);
res = mx_logva_do(level, file, line, func, fmt, ap);
va_end(ap);

return res;
}

int mx_log_finish(void)
{
if (mx_log_log)
Expand Down
11 changes: 11 additions & 0 deletions mx_log.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#define MX_LOG_DEBUG MX_LOG_SYSLOG_TO_MXLOG(LOG_DEBUG) /* debug-level messages */

#define mx_log(level, fmt, ...) mx_log_do((level), __FILE__, __LINE__, __func__, (fmt), ##__VA_ARGS__)
#define mx_logva(level, fmt, ap) mx_logva_do((level), __FILE__, __LINE__, __func__, (fmt), (ap))

#define mx_log_fatal(fmt, ...) mx_log(MX_LOG_EMERG, (fmt), ##__VA_ARGS__)
#define mx_log_emerg(fmt, ...) mx_log(MX_LOG_EMERG, (fmt), ##__VA_ARGS__)
Expand All @@ -33,6 +34,16 @@
#define mx_log_info(fmt, ...) mx_log(MX_LOG_INFO, (fmt), ##__VA_ARGS__)
#define mx_log_debug(fmt, ...) mx_log(MX_LOG_DEBUG, (fmt), ##__VA_ARGS__)

#define mx_logva_fatal(fmt, ap) mx_log(MX_LOG_EMERG, (fmt), (ap))
#define mx_logva_emerg(fmt, ap) mx_log(MX_LOG_EMERG, (fmt), (ap))
#define mx_logva_alert(fmt, ap) mx_log(MX_LOG_ALERT, (fmt), (ap))
#define mx_logva_crit(fmt, ap) mx_log(MX_LOG_CRIT, (fmt), (ap))
#define mx_logva_err(fmt, ap) mx_log(MX_LOG_ERR, (fmt), (ap))
#define mx_logva_warning(fmt, ap) mx_log(MX_LOG_WARNING, (fmt), (ap))
#define mx_logva_notice(fmt, ap) mx_log(MX_LOG_NOTICE, (fmt), (ap))
#define mx_logva_info(fmt, ap) mx_log(MX_LOG_INFO, (fmt), (ap))
#define mx_logva_debug(fmt, ap) mx_log(MX_LOG_DEBUG, (fmt), (ap))

int mx_log_log(int level, int loglevel, char *file, unsigned long line, const char *func, const char *msg) __attribute__ ((weak));
int mx_log_print(char *msg, size_t len) __attribute__ ((weak));

Expand Down

0 comments on commit 68e8a19

Please sign in to comment.