]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
cmdline_s4: re-initialise logging once loadparm is ready
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Thu, 26 May 2022 03:46:08 +0000 (15:46 +1200)
committerAndreas Schneider <asn@cryptomilk.org>
Mon, 30 May 2022 10:11:28 +0000 (10:11 +0000)
The first time round we maybe didn't know which files we wanted to log to.
Suppose, for example, we had an smb.conf with

 log level = 1 dsdb_group_json_audit:5@/var/log/group_json.log

we wouldn't see anything in "/var/log/group_json.log", while the level
5 dsdb_group_json_audit messages would go into the main log.

Note that the named file would still be opened by winbindd and others
that use the s3 code, but would remain empty as they don't have anything
to say about dsdb_group_json_audit.

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

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
lib/cmdline/cmdline_s4.c

index 29e9f34bbe249d7e99501239b23415bcd3cec3b8..f8be4ed670cf795fb21144a4d10474fddb9f3fd8 100644 (file)
@@ -31,6 +31,8 @@ static bool _samba_cmdline_load_config_s4(void)
 {
        struct loadparm_context *lp_ctx = samba_cmdline_get_lp_ctx();
        const char *config_file = NULL;
+       const struct samba_cmdline_daemon_cfg *cmdline_daemon_cfg = \
+               samba_cmdline_get_daemon_cfg();
        bool ok;
 
        /* Load smb conf */
@@ -45,15 +47,11 @@ static bool _samba_cmdline_load_config_s4(void)
        }
 
        switch (_config_type) {
-       case SAMBA_CMDLINE_CONFIG_SERVER: {
-               const struct samba_cmdline_daemon_cfg *cmdline_daemon_cfg =
-                       samba_cmdline_get_daemon_cfg();
-
+       case SAMBA_CMDLINE_CONFIG_SERVER:
                if (!cmdline_daemon_cfg->interactive) {
                        setup_logging(getprogname(), DEBUG_FILE);
                }
                break;
-       }
        default:
                break;
        }
@@ -70,6 +68,20 @@ static bool _samba_cmdline_load_config_s4(void)
                }
        }
 
+       switch (_config_type) {
+       case SAMBA_CMDLINE_CONFIG_SERVER:
+               /*
+                * We need to setup_logging *again* to ensure multi-file
+                * logging is set up as specified in smb.conf.
+                */
+               if (!cmdline_daemon_cfg->interactive) {
+                       setup_logging(getprogname(), DEBUG_FILE);
+               }
+               break;
+       default:
+               break;
+       }
+
        return true;
 }