diff options
Diffstat (limited to 'src/libstrongswan/utils/logger.c')
-rw-r--r-- | src/libstrongswan/utils/logger.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/libstrongswan/utils/logger.c b/src/libstrongswan/utils/logger.c index de323bb9a..26f42535e 100644 --- a/src/libstrongswan/utils/logger.c +++ b/src/libstrongswan/utils/logger.c @@ -22,7 +22,6 @@ */ #include <syslog.h> -#include <stdarg.h> #include <string.h> #include <stdio.h> #include <time.h> @@ -30,7 +29,6 @@ #include "logger.h" - /** * Maximum length of a log entry (only used for logger_s.log). */ @@ -180,40 +178,43 @@ static int get_priority(log_level_t loglevel) } /** - * Implementation of logger_t.log. - * - * Yes, logg is written wrong :-). + * Implementation of logger_t.logv. */ -static void logg(private_logger_t *this, log_level_t loglevel, const char *format, ...) +static void logv(private_logger_t *this, log_level_t loglevel, const char *format, va_list args) { if ((this->level & loglevel) == loglevel) { char buffer[MAX_LOG]; - va_list args; - if (this->output == NULL) { /* syslog */ prepend_prefix(this, loglevel, format, buffer); - va_start(args, format); vsyslog(get_priority(loglevel), buffer, args); - va_end(args); } else { /* File output */ prepend_prefix(this, loglevel, format, buffer); - va_start(args, format); vfprintf(this->output, buffer, args); - va_end(args); fprintf(this->output, "\n"); } - } } /** + * Implementation of logger_t.log. + */ +static void logg(private_logger_t *this, log_level_t loglevel, const char *format, ...) +{ + va_list args; + + va_start(args, format); + logv(this, loglevel, format, args); + va_end(args); +} + +/** * Implementation of logger_t.log_bytes. */ static void log_bytes(private_logger_t *this, log_level_t loglevel, const char *label, const char *bytes, size_t len) @@ -357,6 +358,7 @@ logger_t *logger_create(char *logger_name, log_level_t log_level, bool log_threa /* public functions */ this->public.log = (void(*)(logger_t*,log_level_t,const char*,...))logg; + this->public.logv = (void(*)(logger_t*,log_level_t,const char*,va_list))logv; this->public.log_bytes = (void(*)(logger_t*, log_level_t, const char*, const char*,size_t))log_bytes; this->public.log_chunk = log_chunk; this->public.enable_level = (void(*)(logger_t*,log_level_t))enable_level; |