]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master: Add log_core_filter setting to core dump on matching filter
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 16 Apr 2018 11:01:37 +0000 (14:01 +0300)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Wed, 25 Apr 2018 08:03:40 +0000 (11:03 +0300)
src/lib-master/master-service-settings.c
src/lib-master/master-service-settings.h

index f24ba8b33426ea08eebac8db961009f05e4142b3..6feac9d2f7d975a62a49f7759a77a48bebc0a963 100644 (file)
@@ -44,6 +44,7 @@ static const struct setting_define master_service_setting_defines[] = {
        DEF(SET_STR, debug_log_path),
        DEF(SET_STR, log_timestamp),
        DEF(SET_STR, log_debug),
+       DEF(SET_STR, log_core_filter),
        DEF(SET_STR, syslog_facility),
        DEF(SET_STR, import_environment),
        DEF(SET_STR, stats_writer_socket_path),
@@ -79,6 +80,7 @@ static const struct master_service_settings master_service_default_settings = {
        .debug_log_path = "",
        .log_timestamp = DEFAULT_FAILURE_STAMP_FORMAT,
        .log_debug = "",
+       .log_core_filter = "",
        .syslog_facility = "mail",
        .import_environment = "TZ CORE_OUTOFMEM CORE_ERROR" ENV_SYSTEMD ENV_GDB,
        .stats_writer_socket_path = "stats-writer",
@@ -168,6 +170,16 @@ master_service_settings_check(void *_set, pool_t pool ATTR_UNUSED,
 #endif
                event_filter_unref(&filter);
        }
+
+       if (!log_filter_parse("log_core_filter", set->log_core_filter,
+                             &filter, error_r))
+               return FALSE;
+       if (filter != NULL) {
+#ifndef CONFIG_BINARY
+               event_set_global_core_log_filter(filter);
+#endif
+               event_filter_unref(&filter);
+       }
        return TRUE;
 }
 /* </settings checks> */
index 3097ca6a4f7ff9ebc81a6d0f5cf8a3c5478fdf03..e85c1245e825f3321b1cf62cef7f0381615b657b 100644 (file)
@@ -15,6 +15,7 @@ struct master_service_settings {
        const char *debug_log_path;
        const char *log_timestamp;
        const char *log_debug;
+       const char *log_core_filter;
        const char *syslog_facility;
        const char *import_environment;
        const char *stats_writer_socket_path;