diff --git a/man/journald.conf.xml b/man/journald.conf.xml
index 959815a8f1..86137a951d 100644
--- a/man/journald.conf.xml
+++ b/man/journald.conf.xml
@@ -28,6 +28,9 @@
/run/systemd/journald.conf.d/*.conf
/usr/lib/systemd/journald.conf.d/*.conf
/etc/systemd/journald@NAMESPACE.conf
+ /etc/systemd/journald@NAMESPACE.conf.d/*.conf
+ /run/systemd/journald@NAMESPACE.conf.d/*.conf
+ /usr/lib/systemd/journald@NAMESPACE.conf.d/*.conf
@@ -41,8 +44,9 @@
The systemd-journald instance managing the default namespace is configured by
/etc/systemd/journald.conf and associated drop-ins. Instances managing other
- namespaces read /etc/systemd/journald@NAMESPACE.conf with
- the namespace identifier filled in. This allows each namespace to carry a distinct configuration. See
+ namespaces read /etc/systemd/journald@NAMESPACE.conf
+ and associated drop-ins with the namespace identifier filled in. This allows each namespace to carry
+ a distinct configuration. See
systemd-journald.service8
for details about journal namespaces.
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
index 5cad374083..372acf3354 100644
--- a/src/journal/journald-server.c
+++ b/src/journal/journald-server.c
@@ -1625,17 +1625,19 @@ static int server_parse_config_file(Server *s) {
assert(s);
if (s->namespace) {
- const char *namespaced;
+ const char *namespaced, *dropin_dirname;
/* If we are running in namespace mode, load the namespace specific configuration file, and nothing else */
namespaced = strjoina(PKGSYSCONFDIR "/journald@", s->namespace, ".conf");
+ dropin_dirname = strjoina("journald@", s->namespace, ".conf.d");
- r = config_parse(NULL,
- namespaced, NULL,
- "Journal\0",
- config_item_perf_lookup, journald_gperf_lookup,
- CONFIG_PARSE_WARN, s,
- NULL);
+ r = config_parse_many(
+ STRV_MAKE_CONST(namespaced),
+ (const char* const*) CONF_PATHS_STRV("systemd"),
+ dropin_dirname,
+ "Journal\0",
+ config_item_perf_lookup, journald_gperf_lookup,
+ CONFIG_PARSE_WARN, s, NULL);
if (r < 0)
return r;