]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
* Use own logging system to use static logging buffer instead of dynamically allocate...
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 16 Jun 2009 11:39:09 +0000 (15:39 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 16 Jun 2009 11:39:09 +0000 (15:39 +0400)
src/main.c
src/main.h
src/message.h
src/util.c
src/util.h

index 03a2c01b95c5af392bd4943b58b8ee91641268eb..9b8992d8b4d4faefead44146fc30f4764a1a011e 100644 (file)
@@ -193,6 +193,7 @@ config_logger (struct rspamd_main *rspamd, gboolean is_fatal)
                        else {
                                rspamd->cfg->log_fd = 2;
                        }
+            rspamd_set_logger (file_log_function, rspamd->cfg);
                        g_log_set_default_handler (file_log_function, rspamd->cfg);
                        break;
                case RSPAMD_LOG_FILE:
@@ -206,6 +207,7 @@ config_logger (struct rspamd_main *rspamd, gboolean is_fatal)
                                }
                        }
                        else {
+                rspamd_set_logger (file_log_function, rspamd->cfg);
                                g_log_set_default_handler (file_log_function, rspamd->cfg);
                        }
                        break;
@@ -220,6 +222,7 @@ config_logger (struct rspamd_main *rspamd, gboolean is_fatal)
                                }
                        }
                        else {
+                rspamd_set_logger (syslog_log_function, rspamd->cfg);
                                g_log_set_default_handler (syslog_log_function, rspamd->cfg);
                        }
                        break;
@@ -446,6 +449,7 @@ main (int argc, char **argv, char **env)
 
        /* First set logger to console logger */
        cfg->log_fd = STDERR_FILENO;
+       rspamd_set_logger (file_log_function, rspamd->cfg);
        g_log_set_default_handler (file_log_function, cfg);
 
 #ifndef HAVE_SETPROCTITLE
index c80efc494e5dad0eff5fa4172dcecf34c396d3a9..c356823b8ad915396863fb068cda257440d10f99 100644 (file)
@@ -16,6 +16,7 @@
 #include "filter.h"
 #include "buffer.h"
 #include "hash.h"
+#include "util.h"
 
 /* Default values */
 #define FIXED_CONFIG_FILE CMAKE_PREFIX "/etc/rspamd.conf"
 #define WORKER_IO_TIMEOUT 60
 
 /* Logging in postfix style */
-#define msg_err g_critical
-#define msg_warn       g_warning
-#define msg_info       g_message
-#define msg_debug g_debug
+#define msg_err(args...)       rspamd_log_function(G_LOG_LEVEL_CRITICAL, ##args)
+#define msg_warn(args...)      rspamd_log_function(G_LOG_LEVEL_WARNING, ##args)
+#define msg_info(args...)      rspamd_log_function(G_LOG_LEVEL_INFO, ##args)
+#define msg_debug(args...)     rspamd_log_function(G_LOG_LEVEL_DEBUG, ##args)
 
 #ifdef CRLF
 #undef CRLF
index 9a63b0824d5ba6d1cb15cc4adfd6b07a4b82d8f2..d32c78d7f589c5f0fdde09cd09acd45554f6b065 100644 (file)
@@ -9,6 +9,9 @@
 #include "config.h"
 #include "fuzzy.h"
 
+struct worker_task;
+struct controller_session;
+
 struct mime_part {
        GMimeContentType *type;
        GByteArray *content;
index cb2d948ecb13603c084191ab3482d01abcf9a963..c90427935178c56420d398cffa2c5ba8b966827a 100644 (file)
@@ -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)
 {
index c6ca2c25e07fed813e0762bb7ca047581bdf34ac..4bea3d08e764fd3f9c8c293ec490943e831d86c3 100644 (file)
@@ -2,9 +2,11 @@
 #define RSPAMD_UTIL_H
 
 #include "config.h"
-#include "main.h"
+#include "mem_pool.h"
 
 struct config_file;
+struct rspamd_main;
+struct workq;
 
 /* Create socket and bind or connect it to specified address and port */
 int make_tcp_socket (struct in_addr *, u_short, gboolean is_server);
@@ -47,9 +49,11 @@ int pidfile_close(struct pidfh *pfh);
 int pidfile_remove(struct pidfh *pfh);
 #endif
 
+void rspamd_set_logger (GLogFunc func, struct config_file *cfg);
 int open_log (struct config_file *cfg);
 void close_log (struct config_file *cfg);
 int reopen_log (struct config_file *cfg);
+void rspamd_log_function (GLogLevelFlags log_level, const char *fmt, ...);
 void syslog_log_function (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer arg);
 void file_log_function (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer arg);