You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
falk-werner_webfused/src/webfused/log/logger.c

87 lines
1.5 KiB

#include "webfused/log/logger.h"
#include "webfused/log/log.h"
#include <stddef.h>
struct wfd_logger
{
int level;
wfd_logger_log_fn * log;
wfd_logger_onclose_fn * onclose;
void * user_data;
};
static void wfd_logger_default_log(
void * user_data,
int level,
char const * format,
va_list args);
static struct wfd_logger g_wfd_logger =
{
.level = WFD_LOGLEVEL_ALL,
.log = &wfd_logger_default_log,
.onclose = NULL,
.user_data = NULL
};
void
wfd_logger_init(
int level,
wfd_logger_log_fn * log,
wfd_logger_onclose_fn * onclose,
void * user_data)
{
wfd_logger_close();
g_wfd_logger.level = level;
g_wfd_logger.log = log;
g_wfd_logger.onclose = onclose;
g_wfd_logger.user_data = user_data;
}
void
wfd_logger_close(void)
{
if (NULL != g_wfd_logger.onclose)
{
g_wfd_logger.onclose(g_wfd_logger.user_data);
}
g_wfd_logger.level = WFD_LOGLEVEL_ALL;
g_wfd_logger.log = &wfd_logger_default_log;
g_wfd_logger.onclose = NULL;
g_wfd_logger.user_data = NULL;
}
void
wfd_log(
int level,
char const * format,
...)
{
if (g_wfd_logger.level >= level)
{
va_list args;
va_start(args, format);
g_wfd_logger.log(
g_wfd_logger.user_data,
level,
format,
args);
va_end(args);
}
}
static void wfd_logger_default_log(
void * user_data,
int level,
char const * format,
va_list args)
{
(void) user_data;
(void) level;
(void) format;
(void) args;
}