]> source.dussan.org Git - rspamd.git/commitdiff
Add special knob for systemd logging.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 17 Sep 2015 13:27:06 +0000 (14:27 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 17 Sep 2015 13:27:06 +0000 (14:27 +0100)
src/libserver/cfg_file.h
src/libserver/cfg_rcl.c
src/libutil/logger.c

index 4d87bf8e4c6390ea5460e148bae7d177686cc278..6ce3f58f7e22620a22b782af06325dda22f11fd3 100644 (file)
@@ -202,6 +202,7 @@ struct rspamd_config {
        GHashTable *debug_modules;                      /**< logging modules to debug                                                   */
        gboolean log_color;                             /**< output colors for console output                   */
        gboolean log_extended;                          /**< log extended information                                                   */
+       gboolean log_systemd;                           /**< special case for systemd logger                                    */
 
        gboolean mlock_statfile_pool;                   /**< use mlock (2) for locking statfiles                                */
 
index 3a98cdd55d016b44ff328cf01f2ea566eff12c0e..263ba9e409c4b2d31b3da79e397644d56a0ebb8f 100644 (file)
@@ -1190,6 +1190,16 @@ rspamd_rcl_config_init (void)
                rspamd_rcl_parse_struct_boolean,
                G_STRUCT_OFFSET (struct rspamd_config, log_color),
                0);
+       rspamd_rcl_add_default_handler (sub,
+                       "log_systemd",
+                       rspamd_rcl_parse_struct_boolean,
+                       G_STRUCT_OFFSET (struct rspamd_config, log_systemd),
+                       0);
+       rspamd_rcl_add_default_handler (sub,
+                       "systemd",
+                       rspamd_rcl_parse_struct_boolean,
+                       G_STRUCT_OFFSET (struct rspamd_config, log_systemd),
+                       0);
        rspamd_rcl_add_default_handler (sub,
                        "debug_modules",
                        rspamd_rcl_parse_struct_string_list,
index 7a10b4ec76b2bbd0829a53445be5db0f8cec1300..cca21f870cdd6132addae1f3fa4226bcb543a72b 100644 (file)
@@ -748,9 +748,12 @@ file_log_function (const gchar *log_domain,
                }
 
                /* Format time */
-               tms = localtime (&now);
+               if (!rspamd_log->cfg->log_systemd) {
+                       tms = localtime (&now);
+
+                       strftime (timebuf, sizeof (timebuf), "%F %H:%M:%S", tms);
+               }
 
-               strftime (timebuf, sizeof (timebuf), "%F %H:%M:%S", tms);
                cptype = g_quark_to_string (rspamd_log->process_type);
 
                if (rspamd_log->cfg->log_color) {
@@ -771,12 +774,20 @@ file_log_function (const gchar *log_domain,
                        r = 0;
                }
 
-               r += rspamd_snprintf (tmpbuf + r,
-                               sizeof (tmpbuf) - r,
-                               "%s #%P(%s) ",
-                               timebuf,
-                               rspamd_log->pid,
-                               cptype);
+               if (!rspamd_log->cfg->log_systemd) {
+                       r += rspamd_snprintf (tmpbuf + r,
+                                       sizeof (tmpbuf) - r,
+                                       "%s #%P(%s) ",
+                                       timebuf,
+                                       rspamd_log->pid,
+                                       cptype);
+               }
+               else {
+                       r += rspamd_snprintf (tmpbuf + r,
+                                       sizeof (tmpbuf) - r,
+                                       "(%s) ",
+                                       cptype);
+               }
 
                modulebuf[0] = '\0';
                mremain = sizeof (modulebuf);