From bfe48b659baf0e5007e5fd6b7804881cb92e32fe Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 6 Jan 2021 19:18:40 +0000 Subject: [PATCH] [Fix] Fix logging for rspamadm --- src/libserver/logger.h | 2 +- src/libserver/logger/logger.c | 32 ++++++++++++++++++-------------- src/rspamadm/rspamadm.c | 9 ++++----- src/rspamd.c | 2 +- test/rspamd_test_suite.c | 9 +++++---- 5 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/libserver/logger.h b/src/libserver/logger.h index ca910c261..9bf7015c0 100644 --- a/src/libserver/logger.h +++ b/src/libserver/logger.h @@ -68,7 +68,7 @@ struct rspamd_logger_funcs { * This logger is also used as an emergency logger * @return new rspamd logger object */ -rspamd_logger_t * rspamd_log_open_emergency (rspamd_mempool_t *pool); +rspamd_logger_t * rspamd_log_open_emergency (rspamd_mempool_t *pool, gint flags); /** * Open specific (configured logging) diff --git a/src/libserver/logger/logger.c b/src/libserver/logger/logger.c index fee4477a5..cf8ad496f 100644 --- a/src/libserver/logger/logger.c +++ b/src/libserver/logger/logger.c @@ -131,7 +131,7 @@ rspamd_emergency_logger_dtor (gpointer d) } rspamd_logger_t * -rspamd_log_open_emergency (rspamd_mempool_t *pool) +rspamd_log_open_emergency (rspamd_mempool_t *pool, gint flags) { rspamd_logger_t *logger; GError *err = NULL; @@ -147,7 +147,7 @@ rspamd_log_open_emergency (rspamd_mempool_t *pool) logger = g_malloc0 (sizeof (rspamd_logger_t)); } - + logger->flags = flags; logger->pool = pool; logger->process_type = "main"; @@ -432,13 +432,15 @@ rspamd_common_logv (rspamd_logger_t *rspamd_log, gint level_flags, if (level >= G_LOG_LEVEL_INFO) { end = rspamd_vsnprintf (logbuf, sizeof (logbuf), fmt, args); - if ((nescaped = rspamd_log_line_need_escape (logbuf, end - logbuf)) != 0) { - gsize unsecaped_len = end - logbuf; - gchar *logbuf_escaped = g_alloca (unsecaped_len + nescaped * 4); - log_line = logbuf_escaped; + if (!(rspamd_log->flags & RSPAMD_LOG_FLAG_RSPAMADM)) { + if ((nescaped = rspamd_log_line_need_escape (logbuf, end - logbuf)) != 0) { + gsize unsecaped_len = end - logbuf; + gchar *logbuf_escaped = g_alloca (unsecaped_len + nescaped * 4); + log_line = logbuf_escaped; - end = rspamd_log_line_hex_escape (logbuf, unsecaped_len, - logbuf_escaped,unsecaped_len + nescaped * 4); + end = rspamd_log_line_hex_escape (logbuf, unsecaped_len, + logbuf_escaped, unsecaped_len + nescaped * 4); + } } rspamd_fprintf (stderr, "%*s\n", (gint)(end - log_line), @@ -456,13 +458,15 @@ rspamd_common_logv (rspamd_logger_t *rspamd_log, gint level_flags, if (rspamd_logger_need_log (rspamd_log, level_flags, mod_id)) { end = rspamd_vsnprintf (logbuf, sizeof (logbuf), fmt, args); - if ((nescaped = rspamd_log_line_need_escape (logbuf, end - logbuf)) != 0) { - gsize unsecaped_len = end - logbuf; - gchar *logbuf_escaped = g_alloca (unsecaped_len + nescaped * 4); - log_line = logbuf_escaped; + if (!(rspamd_log->flags & RSPAMD_LOG_FLAG_RSPAMADM)) { + if ((nescaped = rspamd_log_line_need_escape (logbuf, end - logbuf)) != 0) { + gsize unsecaped_len = end - logbuf; + gchar *logbuf_escaped = g_alloca (unsecaped_len + nescaped * 4); + log_line = logbuf_escaped; - end = rspamd_log_line_hex_escape (logbuf, unsecaped_len, - logbuf_escaped,unsecaped_len + nescaped * 4); + end = rspamd_log_line_hex_escape (logbuf, unsecaped_len, + logbuf_escaped, unsecaped_len + nescaped * 4); + } } if ((level_flags & RSPAMD_LOG_ENCRYPTED) && rspamd_log->pk) { diff --git a/src/rspamadm/rspamadm.c b/src/rspamadm/rspamadm.c index 5de5e677a..94fa4881d 100644 --- a/src/rspamadm/rspamadm.c +++ b/src/rspamadm/rspamadm.c @@ -438,18 +438,17 @@ main (gint argc, gchar **argv, gchar **env) exit (1); } - /* Setup logger */ - rspamd_main->logger = rspamd_log_open_emergency (rspamd_main->server_pool); /* Setup logger */ if (verbose) { - rspamd_log_set_log_level (rspamd_main->logger, G_LOG_LEVEL_DEBUG); - rspamd_log_set_log_flags (rspamd_main->logger, + rspamd_main->logger = rspamd_log_open_emergency (rspamd_main->server_pool, RSPAMD_LOG_FLAG_USEC|RSPAMD_LOG_FLAG_ENFORCED|RSPAMD_LOG_FLAG_RSPAMADM); + rspamd_log_set_log_level (rspamd_main->logger, G_LOG_LEVEL_DEBUG); } else { + rspamd_main->logger = rspamd_log_open_emergency (rspamd_main->server_pool, + RSPAMD_LOG_FLAG_RSPAMADM); rspamd_log_set_log_level (rspamd_main->logger, G_LOG_LEVEL_MESSAGE); - rspamd_log_set_log_flags (rspamd_main->logger,RSPAMD_LOG_FLAG_RSPAMADM); } rspamd_main->event_loop = ev_default_loop (EVFLAG_SIGNALFD|EVBACKEND_ALL); diff --git a/src/rspamd.c b/src/rspamd.c index fce081b1c..cfaba54d6 100644 --- a/src/rspamd.c +++ b/src/rspamd.c @@ -1395,7 +1395,7 @@ main (gint argc, gchar **argv, gchar **env) type = g_quark_from_static_string ("main"); /* First set logger to console logger */ - rspamd_main->logger = rspamd_log_open_emergency (rspamd_main->server_pool); + rspamd_main->logger = rspamd_log_open_emergency (rspamd_main->server_pool, 0); g_assert (rspamd_main->logger != NULL); if (is_debug) { diff --git a/test/rspamd_test_suite.c b/test/rspamd_test_suite.c index 4525f8ebc..7d0136708 100644 --- a/test/rspamd_test_suite.c +++ b/test/rspamd_test_suite.c @@ -52,17 +52,18 @@ main (int argc, char **argv) } /* Setup logger */ - rspamd_main->logger = rspamd_log_open_emergency (rspamd_main->server_pool); /* Setup logger */ if (verbose || g_test_verbose ()) { - rspamd_log_set_log_level (rspamd_main->logger, G_LOG_LEVEL_DEBUG); - rspamd_log_set_log_flags (rspamd_main->logger, + rspamd_main->logger = rspamd_log_open_emergency (rspamd_main->server_pool, RSPAMD_LOG_FLAG_USEC|RSPAMD_LOG_FLAG_ENFORCED|RSPAMD_LOG_FLAG_RSPAMADM); + + rspamd_log_set_log_level (rspamd_main->logger, G_LOG_LEVEL_DEBUG); } else { + rspamd_main->logger = rspamd_log_open_emergency (rspamd_main->server_pool, + RSPAMD_LOG_FLAG_RSPAMADM); rspamd_log_set_log_level (rspamd_main->logger, G_LOG_LEVEL_MESSAGE); - rspamd_log_set_log_flags (rspamd_main->logger,RSPAMD_LOG_FLAG_RSPAMADM); } rspamd_lua_set_path ((lua_State *)cfg->lua_state, NULL, NULL); -- 2.39.5