From: Vsevolod Stakhov Date: Thu, 20 Feb 2014 17:40:18 +0000 (+0000) Subject: Varargs versions of logging functions. X-Git-Tag: 0.7.0~391 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=aa075e8ad006484fe7fe9d99b777f814cf3939e7;p=rspamd.git Varargs versions of logging functions. --- diff --git a/src/logger.c b/src/logger.c index c0f2e4888..285e8decb 100644 --- a/src/logger.c +++ b/src/logger.c @@ -391,58 +391,68 @@ flush_log_buf (rspamd_logger_t *rspamd_log) } } -/** - * This log functions select real logger and write message if level is less or equal to configured log level - */ + void -rspamd_common_log_function (rspamd_logger_t *rspamd_log, GLogLevelFlags log_level, - const gchar *function, const gchar *fmt, ...) +rspamd_common_logv (rspamd_logger_t *rspamd_log, GLogLevelFlags log_level, const gchar *function, + const gchar *fmt, va_list args) { - static gchar logbuf[BUFSIZ]; - va_list vp; - u_char *end; + static gchar logbuf[BUFSIZ]; + u_char *end; - if (log_level <= rspamd_log->cfg->log_level) { + if (rspamd_log == NULL) { + rspamd_log = default_logger; + } + + if (rspamd_log == NULL) { + /* Just fprintf message to stderr */ + if (log_level >= G_LOG_LEVEL_INFO) { + end = rspamd_vsnprintf (logbuf, sizeof (logbuf), fmt, args); + *end = '\0'; + rspamd_escape_log_string (logbuf); + fprintf (stderr, "%s\n", logbuf); + } + } + else if (log_level <= rspamd_log->cfg->log_level) { g_mutex_lock (rspamd_log->mtx); - va_start (vp, fmt); - end = rspamd_vsnprintf (logbuf, sizeof (logbuf), fmt, vp); + end = rspamd_vsnprintf (logbuf, sizeof (logbuf), fmt, args); *end = '\0'; rspamd_escape_log_string (logbuf); - va_end (vp); rspamd_log->log_func (NULL, function, log_level, logbuf, FALSE, rspamd_log); g_mutex_unlock (rspamd_log->mtx); } } +/** + * This log functions select real logger and write message if level is less or equal to configured log level + */ +void +rspamd_common_log_function (rspamd_logger_t *rspamd_log, GLogLevelFlags log_level, + const gchar *function, const gchar *fmt, ...) +{ + va_list vp; + + va_start (vp, fmt); + rspamd_common_logv (rspamd_log, log_level, function, fmt, vp); + va_end (vp); +} + +void +rspamd_default_logv (GLogLevelFlags log_level, const gchar *function, + const gchar *fmt, va_list args) +{ + rspamd_common_logv (NULL, log_level, function, fmt, args); +} + void rspamd_default_log_function (GLogLevelFlags log_level, const gchar *function, const gchar *fmt, ...) { - static gchar logbuf[BUFSIZ]; + va_list vp; - u_char *end; - if (default_logger == NULL) { - /* Just fprintf message */ - if (log_level >= G_LOG_LEVEL_INFO) { - va_start (vp, fmt); - end = rspamd_vsnprintf (logbuf, sizeof (logbuf), fmt, vp); - *end = '\0'; - rspamd_escape_log_string (logbuf); - va_end (vp); - fprintf (stderr, "%s\n", logbuf); - } - } - else if (log_level <= default_logger->cfg->log_level) { - g_mutex_lock (default_logger->mtx); - va_start (vp, fmt); - end = rspamd_vsnprintf (logbuf, sizeof (logbuf), fmt, vp); - *end = '\0'; - rspamd_escape_log_string (logbuf); - va_end (vp); - default_logger->log_func (NULL, function, log_level, logbuf, FALSE, default_logger); - g_mutex_unlock (default_logger->mtx); - } + va_start (vp, fmt); + rspamd_default_logv (log_level, function, fmt, vp); + va_end (vp); } diff --git a/src/logger.h b/src/logger.h index 94d9f5f6a..6f46080de 100644 --- a/src/logger.h +++ b/src/logger.h @@ -63,6 +63,9 @@ void rspamd_glib_log_function (const gchar *log_domain, void rspamd_common_log_function (rspamd_logger_t *logger, GLogLevelFlags log_level, const gchar *function, const gchar *fmt, ...); +void rspamd_common_logv (rspamd_logger_t *logger, + GLogLevelFlags log_level, const gchar *function, const gchar *fmt, va_list args); + /** * Conditional debug function */ @@ -75,6 +78,15 @@ void rspamd_conditional_debug (rspamd_logger_t *logger, void rspamd_default_log_function (GLogLevelFlags log_level, const gchar *function, const gchar *fmt, ...); +/** + * Varargs version of default log function + * @param log_level + * @param function + * @param fmt + * @param args + */ +void rspamd_default_logv (GLogLevelFlags log_level, const gchar *function, const gchar *fmt, va_list args); + /** * Temporary turn on debug */