diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-08-28 15:10:55 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-08-28 15:10:55 +0100 |
commit | a69912aab3e395f76a5f2c28b14e8d94f833758b (patch) | |
tree | f44e095d2b2321775c414c158708e0a02863ffd4 /src | |
parent | af386443b81dceacd31d88f31371f23f2ad14098 (diff) | |
download | rspamd-a69912aab3e395f76a5f2c28b14e8d94f833758b.tar.gz rspamd-a69912aab3e395f76a5f2c28b14e8d94f833758b.zip |
Start migration to more verbose logger.
Diffstat (limited to 'src')
-rw-r--r-- | src/libserver/dns.c | 5 | ||||
-rw-r--r-- | src/libutil/logger.c | 413 | ||||
-rw-r--r-- | src/libutil/logger.h | 113 |
3 files changed, 299 insertions, 232 deletions
diff --git a/src/libserver/dns.c b/src/libserver/dns.c index f86190415..3c6a3efe6 100644 --- a/src/libserver/dns.c +++ b/src/libserver/dns.c @@ -177,9 +177,8 @@ dns_resolver_init (rspamd_logger_t *logger, if (cfg != NULL) { rdns_resolver_set_log_level (new->r, cfg->log_level); } - rdns_resolver_set_logger (new->r, - (rdns_log_function)rspamd_common_logv, - logger); + rspamd_common_logv (new->r, (rdns_log_function) rspamd_common_logv, NULL, + NULL, logger, NULL, NULL); if (cfg == NULL || cfg->nameservers == NULL) { /* Parse resolv.conf */ diff --git a/src/libutil/logger.c b/src/libutil/logger.c index 87a8781e8..31471942d 100644 --- a/src/libutil/logger.c +++ b/src/libutil/logger.c @@ -46,7 +46,7 @@ struct rspamd_logger_s { guint32 size; guint32 used; u_char *buf; - } io_buf; + } io_buf; gint fd; gboolean is_buffered; gboolean enabled; @@ -72,13 +72,16 @@ static rspamd_logger_t *default_logger = NULL; static void -syslog_log_function (const gchar * log_domain, const gchar *function, - GLogLevelFlags log_level, const gchar * message, - gboolean forced, gpointer arg); + syslog_log_function (const gchar *log_domain, const gchar *module, + const gchar *id, const gchar *function, + GLogLevelFlags log_level, const gchar *message, + gboolean forced, gpointer arg); + static void -file_log_function (const gchar * log_domain, const gchar *function, - GLogLevelFlags log_level, const gchar * message, - gboolean forced, gpointer arg); + file_log_function (const gchar *log_domain, const gchar *module, + const gchar *id, const gchar *function, + GLogLevelFlags log_level, const gchar *message, + gboolean forced, gpointer arg); /** * Calculate checksum for log line (used for repeating logic) @@ -94,22 +97,22 @@ rspamd_log_calculate_cksum (const gchar *message, size_t mlen) */ static void direct_write_log_line (rspamd_logger_t *rspamd_log, - void *data, - gint count, - gboolean is_iov) + void *data, + gsize count, + gboolean is_iov) { gchar errmsg[128]; struct iovec *iov; const gchar *line; - gint r; + glong r; if (rspamd_log->enabled) { if (is_iov) { - iov = (struct iovec *)data; + iov = (struct iovec *) data; r = writev (rspamd_log->fd, iov, count); } else { - line = (const gchar *)data; + line = (const gchar *) data; r = write (rspamd_log->fd, line, count); } if (r == -1) { @@ -144,7 +147,7 @@ direct_write_log_line (rspamd_logger_t *rspamd_log, static void rspamd_escape_log_string (gchar *str) { - guchar *p = (guchar *)str; + guchar *p = (guchar *) str; while (*p) { if ((*p & 0x80) || !g_ascii_isprint (*p)) { @@ -162,31 +165,34 @@ gint rspamd_log_open_priv (rspamd_logger_t *rspamd_log, uid_t uid, gid_t gid) { switch (rspamd_log->cfg->log_type) { - case RSPAMD_LOG_CONSOLE: - /* Do nothing with console */ - rspamd_log->enabled = TRUE; - return 0; - case RSPAMD_LOG_SYSLOG: - openlog ("rspamd", LOG_NDELAY | LOG_PID, rspamd_log->cfg->log_facility); - rspamd_log->enabled = TRUE; - return 0; - case RSPAMD_LOG_FILE: - rspamd_log->fd = open (rspamd_log->cfg->log_file, - O_CREAT | O_WRONLY | O_APPEND, - S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH); - if (rspamd_log->fd == -1) { - fprintf (stderr, "open_log: cannot open desired log file: %s, %s", - rspamd_log->cfg->log_file, strerror (errno)); - return -1; - } - if (fchown (rspamd_log->fd, uid, gid) == -1) { - fprintf (stderr, "open_log: cannot chown desired log file: %s, %s", - rspamd_log->cfg->log_file, strerror (errno)); - close (rspamd_log->fd); - return -1; - } - rspamd_log->enabled = TRUE; - return 0; + case RSPAMD_LOG_CONSOLE: + /* Do nothing with console */ + rspamd_log->enabled = TRUE; + return 0; + case RSPAMD_LOG_SYSLOG: + openlog ("rspamd", LOG_NDELAY | LOG_PID, + rspamd_log->cfg->log_facility); + rspamd_log->enabled = TRUE; + return 0; + case RSPAMD_LOG_FILE: + rspamd_log->fd = open (rspamd_log->cfg->log_file, + O_CREAT | O_WRONLY | O_APPEND, + S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH); + if (rspamd_log->fd == -1) { + fprintf (stderr, + "open_log: cannot open desired log file: %s, %s", + rspamd_log->cfg->log_file, strerror (errno)); + return -1; + } + if (fchown (rspamd_log->fd, uid, gid) == -1) { + fprintf (stderr, + "open_log: cannot chown desired log file: %s, %s", + rspamd_log->cfg->log_file, strerror (errno)); + close (rspamd_log->fd); + return -1; + } + rspamd_log->enabled = TRUE; + return 0; } return -1; } @@ -198,48 +204,48 @@ rspamd_log_close_priv (rspamd_logger_t *rspamd_log, uid_t uid, gid_t gid) rspamd_log_flush (rspamd_log); switch (rspamd_log->type) { - case RSPAMD_LOG_CONSOLE: - /* Do nothing special */ - break; - case RSPAMD_LOG_SYSLOG: - closelog (); - break; - case RSPAMD_LOG_FILE: - if (rspamd_log->enabled) { - if (rspamd_log->repeats > REPEATS_MIN) { - rspamd_snprintf (tmpbuf, - sizeof (tmpbuf), - "Last message repeated %ud times", - rspamd_log->repeats); - rspamd_log->repeats = 0; - if (rspamd_log->saved_message) { - file_log_function (NULL, - rspamd_log->saved_function, - rspamd_log->cfg->log_level, - rspamd_log->saved_message, - TRUE, - rspamd_log); - g_free (rspamd_log->saved_message); - g_free (rspamd_log->saved_function); - rspamd_log->saved_message = NULL; - rspamd_log->saved_function = NULL; + case RSPAMD_LOG_CONSOLE: + /* Do nothing special */ + break; + case RSPAMD_LOG_SYSLOG: + closelog (); + break; + case RSPAMD_LOG_FILE: + if (rspamd_log->enabled) { + if (rspamd_log->repeats > REPEATS_MIN) { + rspamd_snprintf (tmpbuf, + sizeof (tmpbuf), + "Last message repeated %ud times", + rspamd_log->repeats); + rspamd_log->repeats = 0; + if (rspamd_log->saved_message) { + file_log_function (NULL, NULL, NULL, + rspamd_log->saved_function, + rspamd_log->cfg->log_level, + rspamd_log->saved_message, + TRUE, + rspamd_log); + g_free (rspamd_log->saved_message); + g_free (rspamd_log->saved_function); + rspamd_log->saved_message = NULL; + rspamd_log->saved_function = NULL; + } + /* It is safe to use temporary buffer here as it is not static */ + file_log_function (NULL, NULL, NULL, + G_STRFUNC, + rspamd_log->cfg->log_level, + tmpbuf, + TRUE, + rspamd_log); + return; } - /* It is safe to use temporary buffer here as it is not static */ - file_log_function (NULL, - G_STRFUNC, - rspamd_log->cfg->log_level, - tmpbuf, - TRUE, - rspamd_log); - return; - } - if (fsync (rspamd_log->fd) == -1) { - msg_err ("error syncing log file: %s", strerror (errno)); + if (fsync (rspamd_log->fd) == -1) { + msg_err ("error syncing log file: %s", strerror (errno)); + } + close (rspamd_log->fd); } - close (rspamd_log->fd); - } - break; + break; } rspamd_log->enabled = FALSE; @@ -265,6 +271,7 @@ rspamd_log_open (rspamd_logger_t *logger) { return rspamd_log_open_priv (logger, -1, -1); } + /** * Close log file or destroy other structures */ @@ -273,6 +280,7 @@ rspamd_log_close (rspamd_logger_t *logger) { rspamd_log_close_priv (logger, -1, -1); } + /** * Close and open log again */ @@ -287,8 +295,8 @@ rspamd_log_reopen (rspamd_logger_t *logger) */ void rspamd_set_logger (struct rspamd_config *cfg, - GQuark ptype, - struct rspamd_main *rspamd) + GQuark ptype, + struct rspamd_main *rspamd) { if (rspamd->logger == NULL) { rspamd->logger = g_malloc (sizeof (rspamd_logger_t)); @@ -303,16 +311,16 @@ rspamd_set_logger (struct rspamd_config *cfg, rspamd->logger->process_type = ptype; switch (cfg->log_type) { - case RSPAMD_LOG_CONSOLE: - rspamd->logger->log_func = file_log_function; - rspamd->logger->fd = STDERR_FILENO; - break; - case RSPAMD_LOG_SYSLOG: - rspamd->logger->log_func = syslog_log_function; - break; - case RSPAMD_LOG_FILE: - rspamd->logger->log_func = file_log_function; - break; + case RSPAMD_LOG_CONSOLE: + rspamd->logger->log_func = file_log_function; + rspamd->logger->fd = STDERR_FILENO; + break; + case RSPAMD_LOG_SYSLOG: + rspamd->logger->log_func = syslog_log_function; + break; + case RSPAMD_LOG_FILE: + rspamd->logger->log_func = file_log_function; + break; } rspamd->logger->cfg = cfg; @@ -335,9 +343,9 @@ rspamd_set_logger (struct rspamd_config *cfg, } rspamd->logger->debug_ip = radix_create_compressed (); if (!rspamd_map_add (rspamd->cfg, rspamd->cfg->debug_ip_map, - "IP addresses for which debug logs are enabled", - rspamd_radix_read, rspamd_radix_fin, - (void **)&rspamd->logger->debug_ip)) { + "IP addresses for which debug logs are enabled", + rspamd_radix_read, rspamd_radix_fin, + (void **) &rspamd->logger->debug_ip)) { radix_add_generic_iplist (rspamd->cfg->debug_ip_map, &rspamd->logger->debug_ip); } @@ -367,23 +375,21 @@ void rspamd_log_flush (rspamd_logger_t *rspamd_log) { if (rspamd_log->is_buffered && - (rspamd_log->type == RSPAMD_LOG_CONSOLE || rspamd_log->type == - RSPAMD_LOG_FILE)) { + (rspamd_log->type == RSPAMD_LOG_CONSOLE || + rspamd_log->type == RSPAMD_LOG_FILE)) { direct_write_log_line (rspamd_log, - rspamd_log->io_buf.buf, - rspamd_log->io_buf.used, - FALSE); + rspamd_log->io_buf.buf, + rspamd_log->io_buf.used, + FALSE); rspamd_log->io_buf.used = 0; } } void -rspamd_common_logv (rspamd_logger_t *rspamd_log, - GLogLevelFlags log_level, - const gchar *function, - const gchar *fmt, - va_list args) +rspamd_common_logv (rspamd_logger_t *rspamd_log, GLogLevelFlags log_level, + const gchar *module, const gchar *id, const gchar *function, + const gchar *fmt, va_list args) { gchar logbuf[RSPAMD_LOGBUF_SIZE]; u_char *end; @@ -406,12 +412,12 @@ rspamd_common_logv (rspamd_logger_t *rspamd_log, *end = '\0'; rspamd_escape_log_string (logbuf); rspamd_mempool_lock_mutex (rspamd_log->mtx); - rspamd_log->log_func (NULL, - function, - log_level, - logbuf, - FALSE, - rspamd_log); + rspamd_log->log_func (NULL, module, id, + function, + log_level, + logbuf, + FALSE, + rspamd_log); rspamd_mempool_unlock_mutex (rspamd_log->mtx); } } @@ -421,34 +427,37 @@ rspamd_common_logv (rspamd_logger_t *rspamd_log, */ void rspamd_common_log_function (rspamd_logger_t *rspamd_log, - GLogLevelFlags log_level, - const gchar *function, - const gchar *fmt, - ...) + GLogLevelFlags log_level, + const gchar *module, const gchar *id, + const gchar *function, + const gchar *fmt, + ...) { va_list vp; va_start (vp, fmt); - rspamd_common_logv (rspamd_log, log_level, function, fmt, vp); + rspamd_common_logv (rspamd_log, log_level, module, id, function, fmt, vp); va_end (vp); } void -rspamd_default_logv (GLogLevelFlags log_level, const gchar *function, - const gchar *fmt, va_list args) +rspamd_default_logv (GLogLevelFlags log_level, const gchar *module, const gchar *id, + const gchar *function, + const gchar *fmt, va_list args) { - rspamd_common_logv (NULL, log_level, function, fmt, args); + rspamd_common_logv (NULL, log_level, module, id, function, fmt, args); } void rspamd_default_log_function (GLogLevelFlags log_level, - const gchar *function, const gchar *fmt, ...) + const gchar *module, const gchar *id, + const gchar *function, const gchar *fmt, ...) { va_list vp; va_start (vp, fmt); - rspamd_default_logv (log_level, function, fmt, vp); + rspamd_default_logv (log_level, module, id, function, fmt, vp); va_end (vp); } @@ -463,8 +472,8 @@ fill_buffer (rspamd_logger_t *rspamd_log, const struct iovec *iov, gint iovcnt) for (i = 0; i < iovcnt; i++) { memcpy (rspamd_log->io_buf.buf + rspamd_log->io_buf.used, - iov[i].iov_base, - iov[i].iov_len); + iov[i].iov_base, + iov[i].iov_len); rspamd_log->io_buf.used += iov[i].iov_len; } @@ -475,15 +484,15 @@ fill_buffer (rspamd_logger_t *rspamd_log, const struct iovec *iov, gint iovcnt) */ static void file_log_helper (rspamd_logger_t *rspamd_log, - const struct iovec *iov, - gint iovcnt) + const struct iovec *iov, + gint iovcnt) { size_t len = 0; gint i; if (!rspamd_log->is_buffered) { /* Write string directly */ - direct_write_log_line (rspamd_log, (void *)iov, iovcnt, TRUE); + direct_write_log_line (rspamd_log, (void *) iov, iovcnt, TRUE); } else { /* Calculate total length */ @@ -494,7 +503,7 @@ file_log_helper (rspamd_logger_t *rspamd_log, if (rspamd_log->io_buf.size < len) { /* Buffer is too small to hold this string, so write it dirrectly */ rspamd_log_flush (rspamd_log); - direct_write_log_line (rspamd_log, (void *)iov, iovcnt, TRUE); + direct_write_log_line (rspamd_log, (void *) iov, iovcnt, TRUE); } else if (rspamd_log->io_buf.used + len >= rspamd_log->io_buf.size) { /* Buffer is full, try to write it dirrectly */ @@ -512,12 +521,13 @@ file_log_helper (rspamd_logger_t *rspamd_log, * Syslog interface for logging */ static void -syslog_log_function (const gchar * log_domain, - const gchar *function, - GLogLevelFlags log_level, - const gchar * message, - gboolean forced, - gpointer arg) +syslog_log_function (const gchar *log_domain, + const gchar *module, const gchar *id, + const gchar *function, + GLogLevelFlags log_level, + const gchar *message, + gboolean forced, + gpointer arg) { rspamd_logger_t *rspamd_log = arg; @@ -562,19 +572,20 @@ syslog_log_function (const gchar * log_domain, * Main file interface for logging */ static void -file_log_function (const gchar * log_domain, - const gchar *function, - GLogLevelFlags log_level, - const gchar * message, - gboolean forced, - gpointer arg) +file_log_function (const gchar *log_domain, + const gchar *module, const gchar *id, + const gchar *function, + GLogLevelFlags log_level, + const gchar *message, + gboolean forced, + gpointer arg) { gchar tmpbuf[256], timebuf[32]; time_t now; struct tm *tms; struct iovec iov[4]; - gint r = 0; - guint32 cksum; + glong r = 0; + guint64 cksum; size_t mlen; const gchar *cptype = NULL; gboolean got_time = FALSE; @@ -601,10 +612,11 @@ file_log_function (const gchar * log_domain, /* Check repeats */ mlen = strlen (message); cksum = rspamd_log_calculate_cksum (message, mlen); + if (cksum == rspamd_log->last_line_cksum) { rspamd_log->repeats++; if (rspamd_log->repeats > REPEATS_MIN && rspamd_log->repeats < - REPEATS_MAX) { + REPEATS_MAX) { /* Do not log anything */ if (rspamd_log->saved_message == 0) { rspamd_log->saved_message = g_strdup (message); @@ -614,31 +626,32 @@ file_log_function (const gchar * log_domain, } else if (rspamd_log->repeats > REPEATS_MAX) { rspamd_snprintf (tmpbuf, - sizeof (tmpbuf), - "Last message repeated %ud times", - rspamd_log->repeats); + sizeof (tmpbuf), + "Last message repeated %ud times", + rspamd_log->repeats); rspamd_log->repeats = 0; /* It is safe to use temporary buffer here as it is not static */ if (rspamd_log->saved_message) { - file_log_function (log_domain, - rspamd_log->saved_function, + file_log_function (log_domain, NULL, NULL, + rspamd_log->saved_function, + log_level, + rspamd_log->saved_message, + forced, + arg); + } + file_log_function (log_domain, NULL, NULL, + G_STRFUNC, log_level, - rspamd_log->saved_message, + tmpbuf, forced, arg); - } - file_log_function (log_domain, - G_STRFUNC, - log_level, - tmpbuf, - forced, - arg); file_log_function (log_domain, - function, - log_level, - message, - forced, - arg); + module, id, + function, + log_level, + message, + forced, + arg); rspamd_log->repeats = REPEATS_MIN + 1; return; } @@ -648,35 +661,37 @@ file_log_function (const gchar * log_domain, rspamd_log->last_line_cksum = cksum; if (rspamd_log->repeats > REPEATS_MIN) { rspamd_snprintf (tmpbuf, - sizeof (tmpbuf), - "Last message repeated %ud times", - rspamd_log->repeats); + sizeof (tmpbuf), + "Last message repeated %ud times", + rspamd_log->repeats); rspamd_log->repeats = 0; if (rspamd_log->saved_message) { - file_log_function (log_domain, - rspamd_log->saved_function, - log_level, - rspamd_log->saved_message, - forced, - arg); + file_log_function (log_domain, NULL, NULL, + rspamd_log->saved_function, + log_level, + rspamd_log->saved_message, + forced, + arg); g_free (rspamd_log->saved_message); g_free (rspamd_log->saved_function); rspamd_log->saved_message = NULL; rspamd_log->saved_function = NULL; } file_log_function (log_domain, - G_STRFUNC, - log_level, - tmpbuf, - forced, - arg); + NULL, NULL, + G_STRFUNC, + log_level, + tmpbuf, + forced, + arg); /* It is safe to use temporary buffer here as it is not static */ file_log_function (log_domain, - function, - log_level, - message, - forced, - arg); + module, id, + function, + log_level, + message, + forced, + arg); return; } else { @@ -732,9 +747,9 @@ file_log_function (const gchar * log_domain, /* Construct IOV for log line */ iov[0].iov_base = tmpbuf; iov[0].iov_len = r; - iov[1].iov_base = (void *)message; + iov[1].iov_base = (void *) message; iov[1].iov_len = mlen; - iov[2].iov_base = (void *)&lf_chr; + iov[2].iov_base = (void *) &lf_chr; iov[2].iov_len = 1; if (rspamd_log->cfg->log_color) { iov[3].iov_base = "\033[0m"; @@ -748,9 +763,9 @@ file_log_function (const gchar * log_domain, } } else { - iov[0].iov_base = (void *)message; + iov[0].iov_base = (void *) message; iov[0].iov_len = mlen; - iov[1].iov_base = (void *)&lf_chr; + iov[1].iov_base = (void *) &lf_chr; iov[1].iov_len = 1; if (rspamd_log->cfg->log_color) { iov[2].iov_base = "\033[0m"; @@ -771,7 +786,8 @@ file_log_function (const gchar * log_domain, */ void rspamd_conditional_debug (rspamd_logger_t *rspamd_log, - rspamd_inet_addr_t *addr, const gchar *function, const gchar *fmt, ...) + rspamd_inet_addr_t *addr, const gchar *module, const gchar *id, + const gchar *function, const gchar *fmt, ...) { static gchar logbuf[BUFSIZ]; va_list vp; @@ -785,7 +801,7 @@ rspamd_conditional_debug (rspamd_logger_t *rspamd_log, rspamd_log->is_debug) { if (rspamd_log->debug_ip && addr != NULL) { if (radix_find_compressed_addr (rspamd_log->debug_ip, addr) - == RADIX_NO_VALUE) { + == RADIX_NO_VALUE) { return; } } @@ -795,34 +811,35 @@ rspamd_conditional_debug (rspamd_logger_t *rspamd_log, *end = '\0'; rspamd_escape_log_string (logbuf); va_end (vp); - rspamd_log->log_func (NULL, - function, - G_LOG_LEVEL_DEBUG, - logbuf, - TRUE, - rspamd_log); + rspamd_log->log_func (NULL, module, id, + function, + G_LOG_LEVEL_DEBUG, + logbuf, + TRUE, + rspamd_log); rspamd_mempool_unlock_mutex (rspamd_log->mtx); } } + /** * Wrapper for glib logger */ void rspamd_glib_log_function (const gchar *log_domain, - GLogLevelFlags log_level, - const gchar *message, - gpointer arg) + GLogLevelFlags log_level, + const gchar *message, + gpointer arg) { rspamd_logger_t *rspamd_log = arg; if (rspamd_log->enabled) { rspamd_mempool_lock_mutex (rspamd_log->mtx); - rspamd_log->log_func (log_domain, - NULL, - log_level, - message, - FALSE, - rspamd_log); + rspamd_log->log_func (log_domain, "glib", NULL, + NULL, + log_level, + message, + FALSE, + rspamd_log); rspamd_mempool_unlock_mutex (rspamd_log->mtx); } } diff --git a/src/libutil/logger.h b/src/libutil/logger.h index 8595f5481..c3eb6d2cf 100644 --- a/src/libutil/logger.h +++ b/src/libutil/logger.h @@ -7,26 +7,30 @@ #include "util.h" -typedef void (*rspamd_log_func_t)(const gchar * log_domain, - const gchar *function, - GLogLevelFlags log_level, const gchar * message, - gboolean forced, gpointer arg); +typedef void (*rspamd_log_func_t) (const gchar *log_domain, + const gchar *module, const gchar *id, const gchar *function, + GLogLevelFlags log_level, const gchar *message, + gboolean forced, gpointer arg); typedef struct rspamd_logger_s rspamd_logger_t; + /** * Init logger */ void rspamd_set_logger (struct rspamd_config *cfg, - GQuark ptype, - struct rspamd_main *main); + GQuark ptype, + struct rspamd_main *main); + /** * Open log file or initialize other structures */ gint rspamd_log_open (rspamd_logger_t *logger); + /** * Close log file or destroy other structures */ void rspamd_log_close (rspamd_logger_t *logger); + /** * Close and open log again */ @@ -36,10 +40,12 @@ gint rspamd_log_reopen (rspamd_logger_t *logger); * Open log file or initialize other structures for privileged processes */ gint rspamd_log_open_priv (rspamd_logger_t *logger, uid_t uid, gid_t gid); + /** * Close log file or destroy other structures for privileged processes */ void rspamd_log_close_priv (rspamd_logger_t *logger, uid_t uid, gid_t gid); + /** * Close and open log again for privileged processes */ @@ -54,37 +60,40 @@ void rspamd_log_update_pid (GQuark ptype, rspamd_logger_t *logger); * Flush log buffer for some types of logging */ void rspamd_log_flush (rspamd_logger_t *logger); + /** * Log function that is compatible for glib messages */ void rspamd_glib_log_function (const gchar *log_domain, - GLogLevelFlags log_level, const gchar *message, gpointer arg); + GLogLevelFlags log_level, const gchar *message, gpointer arg); /** * Function with variable number of arguments support */ void rspamd_common_log_function (rspamd_logger_t *logger, - GLogLevelFlags log_level, const gchar *function, const gchar *fmt, ...); + GLogLevelFlags log_level, + const gchar *module, const gchar *id, + const gchar *function, const gchar *fmt, ...); -void rspamd_common_logv (rspamd_logger_t *logger, - GLogLevelFlags log_level, - const gchar *function, - const gchar *fmt, - va_list args); +void rspamd_common_logv (rspamd_logger_t *logger, GLogLevelFlags log_level, + const gchar *module, const gchar *id, const gchar *function, + const gchar *fmt, va_list args); /** * Conditional debug function */ void rspamd_conditional_debug (rspamd_logger_t *logger, - rspamd_inet_addr_t *addr, const gchar *function, const gchar *fmt, ...); + rspamd_inet_addr_t *addr, const gchar *module, const gchar *id, + const gchar *function, const gchar *fmt, ...); /** * Function with variable number of arguments support that uses static default logger */ void rspamd_default_log_function (GLogLevelFlags log_level, - const gchar *function, - const gchar *fmt, - ...); + const gchar *module, const gchar *id, + const gchar *function, + const gchar *fmt, + ...); /** * Varargs version of default log function @@ -94,9 +103,10 @@ void rspamd_default_log_function (GLogLevelFlags log_level, * @param args */ void rspamd_default_logv (GLogLevelFlags log_level, - const gchar *function, - const gchar *fmt, - va_list args); + const gchar *module, const gchar *id, + const gchar *function, + const gchar *fmt, + va_list args); /** * Temporary turn on debug @@ -112,19 +122,60 @@ void rspamd_log_nodebug (rspamd_logger_t *logger); /* Logging in postfix style */ #define msg_err(...) rspamd_default_log_function (G_LOG_LEVEL_CRITICAL, \ - G_STRFUNC, \ - __VA_ARGS__) + NULL, NULL, \ + G_STRFUNC, \ + __VA_ARGS__) #define msg_warn(...) rspamd_default_log_function (G_LOG_LEVEL_WARNING, \ - G_STRFUNC, \ - __VA_ARGS__) + NULL, NULL, \ + G_STRFUNC, \ + __VA_ARGS__) #define msg_info(...) rspamd_default_log_function (G_LOG_LEVEL_INFO, \ - G_STRFUNC, \ - __VA_ARGS__) + NULL, NULL, \ + G_STRFUNC, \ + __VA_ARGS__) #define msg_debug(...) rspamd_default_log_function (G_LOG_LEVEL_DEBUG, \ - G_STRFUNC, \ - __VA_ARGS__) + NULL, NULL, \ + G_STRFUNC, \ + __VA_ARGS__) #define debug_task(...) rspamd_conditional_debug (NULL, \ - task->from_addr, \ - G_STRFUNC, \ - __VA_ARGS__) + task->from_addr, \ + task->task_pool->tag.tagname, task->task_pool->tag.uid, \ + G_STRFUNC, \ + __VA_ARGS__) + +/* Use the following macros if you have `task` in the function */ +#define msg_err_task(...) rspamd_default_log_function (G_LOG_LEVEL_CRITICAL, \ + task->task_pool->tag.tagname, task->task_pool->tag.uid, \ + G_STRFUNC, \ + __VA_ARGS__) +#define msg_warn_task(...) rspamd_default_log_function (G_LOG_LEVEL_WARNING, \ + task->task_pool->tag.tagname, task->task_pool->tag.uid, \ + G_STRFUNC, \ + __VA_ARGS__) +#define msg_info_task(...) rspamd_default_log_function (G_LOG_LEVEL_INFO, \ + task->task_pool->tag.tagname, task->task_pool->tag.uid, \ + G_STRFUNC, \ + __VA_ARGS__) +#define msg_debug_task(...) rspamd_default_log_function (G_LOG_LEVEL_DEBUG, \ + task->task_pool->tag.tagname, task->task_pool->tag.uid, \ + G_STRFUNC, \ + __VA_ARGS__) + +/* Use the following macros if you have `pool` in the function */ +#define msg_err_pool(...) rspamd_default_log_function (G_LOG_LEVEL_CRITICAL, \ + pool->tag.tagname, pool->tag.uid, \ + G_STRFUNC, \ + __VA_ARGS__) +#define msg_warn_pool(...) rspamd_default_log_function (G_LOG_LEVEL_WARNING, \ + pool->tag.tagname, pool->tag.uid, \ + G_STRFUNC, \ + __VA_ARGS__) +#define msg_info_pool(...) rspamd_default_log_function (G_LOG_LEVEL_INFO, \ + pool->tag.tagname, pool->tag.uid, \ + G_STRFUNC, \ + __VA_ARGS__) +#define msg_debug_pool(...) rspamd_default_log_function (G_LOG_LEVEL_DEBUG, \ + pool->tag.tagname, pool->tag.uid, \ + G_STRFUNC, \ + __VA_ARGS__) #endif |