From dc48e79c1507e1235a271b4a3763e9701651d2ab Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 16 Jun 2009 15:39:09 +0400 Subject: * Use own logging system to use static logging buffer instead of dynamically allocated one --- src/util.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/util.c') diff --git a/src/util.c b/src/util.c index cb2d948ec..c90427935 100644 --- a/src/util.c +++ b/src/util.c @@ -40,7 +40,14 @@ struct list_file { struct stat st; }; +struct logger_params { + GLogFunc log_func; + struct config_file *cfg; +}; + + static GHashTable *listfiles = NULL; +static struct logger_params log_params; int make_socket_nonblocking (int fd) @@ -662,6 +669,13 @@ close_log (struct config_file *cfg) } +void +rspamd_set_logger (GLogFunc func, struct config_file *cfg) +{ + log_params.log_func = func; + log_params.cfg = cfg; +} + int reopen_log (struct config_file *cfg) { @@ -670,6 +684,20 @@ reopen_log (struct config_file *cfg) return open_log (cfg); } +void +rspamd_log_function (GLogLevelFlags log_level, const char *fmt, ...) +{ + static char logbuf[BUFSIZ]; + va_list vp; + + if (log_level <= log_params.cfg->log_level) { + va_start (vp, fmt); + vsnprintf (logbuf, sizeof (logbuf), fmt, vp); + va_end (vp); + log_params.log_func (NULL, log_level, logbuf, log_params.cfg); + } +} + void syslog_log_function (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer arg) { -- cgit v1.2.3