summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2013-12-23 17:56:44 +0100
committerLennart Poettering <lennart@poettering.net>2013-12-23 17:56:44 +0100
commitb8d0ffc21f9c237cdeef49b1873b47df1a0a1543 (patch)
tree1e834ae889e94b56ca715fc12fb723c2bdbb006d
parent46525bfc020e06609a44670f277aaf23954e7d85 (diff)
log: als turn on debug logging in non-PID1 if /proc/cmdline contains "debug"
-rw-r--r--src/core/main.c1
-rw-r--r--src/shared/log.c17
2 files changed, 17 insertions, 1 deletions
diff --git a/src/core/main.c b/src/core/main.c
index 5189833e48..064445d17e 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -462,7 +462,6 @@ DEFINE_SETTER(config_parse_target, log_set_target_from_string, "target")
DEFINE_SETTER(config_parse_color, log_show_color_from_string, "color" )
DEFINE_SETTER(config_parse_location, log_show_location_from_string, "location")
-
static int config_parse_cpu_affinity2(const char *unit,
const char *filename,
unsigned line,
diff --git a/src/shared/log.c b/src/shared/log.c
index 268f0340a1..2a075ffeba 100644
--- a/src/shared/log.c
+++ b/src/shared/log.c
@@ -879,7 +879,24 @@ int log_set_max_level_from_string(const char *e) {
}
void log_parse_environment(void) {
+ _cleanup_free_ char *line = NULL;
const char *e;
+ int r;
+
+ r = proc_cmdline(&line);
+ if (r < 0)
+ log_warning("Failed to read /proc/cmdline. Ignoring: %s", strerror(-r));
+ else if (r > 0) {
+ char *w, *state;
+ size_t l;
+
+ FOREACH_WORD_QUOTED(w, l, line, state) {
+ if (l == 5 && startswith(w, "debug")) {
+ log_set_max_level(LOG_DEBUG);
+ break;
+ }
+ }
+ }
e = secure_getenv("SYSTEMD_LOG_TARGET");
if (e && log_set_target_from_string(e) < 0)