aboutsummaryrefslogtreecommitdiffstats
path: root/src/util.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2009-06-16 15:39:09 +0400
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2009-06-16 15:39:09 +0400
commitdc48e79c1507e1235a271b4a3763e9701651d2ab (patch)
treef4289c12007f953ade8cf096e1c4ec4eda2bacbc /src/util.c
parent53b1f011a3b34a40b08882e34083db820a815bab (diff)
downloadrspamd-dc48e79c1507e1235a271b4a3763e9701651d2ab.tar.gz
rspamd-dc48e79c1507e1235a271b4a3763e9701651d2ab.zip
* Use own logging system to use static logging buffer instead of dynamically allocated one
Diffstat (limited to 'src/util.c')
-rw-r--r--src/util.c28
1 files changed, 28 insertions, 0 deletions
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)
{
@@ -671,6 +685,20 @@ reopen_log (struct config_file *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)
{
struct config_file *cfg = (struct config_file *)arg;