s3:debug: enable logging for early startup failures
authorRalph Wuerthner <ralph.wuerthner@de.ibm.com>
Mon, 25 Mar 2019 14:17:07 +0000 (15:17 +0100)
committerChristof Schmitt <cs@samba.org>
Thu, 18 Apr 2019 22:21:15 +0000 (22:21 +0000)
Commit c89a33a07a 'debug: Use backends instead of explicitly logging to
syslog or file' introduced a regression where early startup failures (e.g.
unable to connect to CTDB) are no longer logged because the debug subsystem
is not yet fully initialized. Enable logging again with reasonable defaults
when reopen_logs() is called and the parameter file is not yet parsed.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13904

Signed-off-by: Ralph Wuerthner <ralph.wuerthner@de.ibm.com>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Christof Schmitt <cs@samba.org>
Autobuild-User(master): Christof Schmitt <cs@samba.org>
Autobuild-Date(master): Thu Apr 18 22:21:15 UTC 2019 on sn-devel-144

lib/util/debug_s3.c

index 381b9d49102408eec827edff3c7f7c93e92abd7c..5384ac1718ae8f5988b0846868a9f8053d65b4f7 100644 (file)
@@ -47,6 +47,25 @@ bool reopen_logs(void)
                                   lp_logging(talloc_tos()),
                                   lp_syslog(),
                                   lp_syslog_only());
+       } else {
+               /*
+                * Parameters are not yet loaded - configure debugging with
+                * reasonable defaults to enable logging for early
+                * startup failures.
+                */
+               struct debug_settings settings = {
+                       .max_log_size = 5000,
+                       .timestamp_logs = true,
+                       .debug_prefix_timestamp = false,
+                       .debug_hires_timestamp = true,
+                       .debug_pid = false,
+                       .debug_uid = false,
+                       .debug_class = false,
+               };
+               debug_set_settings(&settings,
+                                  "file",
+                                  1,
+                                  false);
        }
        return reopen_logs_internal();
 }