chiark / gitweb /
execute: always add in EXECUTABLE= field when we log something about execution
[elogind.git] / src / core / execute.c
index 5083af9aedec5b4011b55a3f6fbe7900d69b21cd..aad11c94aa4c6e883f1217c9229d9bb61e01c2be 100644 (file)
@@ -1036,9 +1036,10 @@ int exec_spawn(ExecCommand *command,
                 return log_oom();
 
         log_struct_unit(LOG_DEBUG,
-                   unit_id,
-                   "MESSAGE=About to execute %s", line,
-                   NULL);
+                        unit_id,
+                        "EXECUTABLE=%s", command->path,
+                        "MESSAGE=About to execute: %s", line,
+                        NULL);
         free(line);
 
         r = cgroup_bonding_realize_list(cgroup_bondings);
@@ -1516,6 +1517,20 @@ int exec_spawn(ExecCommand *command,
 
                 final_env = strv_env_clean(final_env);
 
+                if (_unlikely_(log_get_max_level() >= LOG_PRI(LOG_DEBUG))) {
+                        line = exec_command_line(final_argv);
+                        if (line) {
+                                log_open();
+                                log_struct_unit(LOG_DEBUG,
+                                                unit_id,
+                                                "EXECUTABLE=%s", command->path,
+                                                "MESSAGE=Executing: %s", line,
+                                                NULL);
+                                log_close();
+                                free(line);
+                                line = NULL;
+                        }
+                }
                 execve(command->path, final_argv, final_env);
                 err = -errno;
                 r = EXIT_EXEC;
@@ -1756,6 +1771,8 @@ int exec_context_load_environment(const ExecContext *c, char ***l) {
                                 strv_free(r);
                                 return k;
                          }
+                        /* Log invalid environment variables with filename */
+                        p = strv_env_clean_log(p, pglob.gl_pathv[n]);
 
                         if (r == NULL)
                                 r = p;