This is useful after a fork but before an exec into a binary that uses
systemd's logging utilities. For example, this should be used in dbus
services that fork off worker processes: currently, the log level set by
the LogControl dbus API will be lost because of the exec, and the worker
process will not have the correct log level set.
#include "stdio-util.h"
#include "string-util.h"
#include "strv.h"
+#include "syslog-util.h"
#include "utf8.h"
/* We follow bash for the character set. Different shells have different rules. */
return 1;
}
+int setenv_systemd_log_level(void) {
+ _cleanup_free_ char *val = NULL;
+ int r;
+
+ r = log_level_to_string_alloc(log_get_max_level(), &val);
+ if (r < 0)
+ return r;
+
+ return RET_NERRNO(setenv("SYSTEMD_LOG_LEVEL", val, /* overwrite= */ true));
+}
+
int getenv_path_list(const char *name, char ***ret_paths) {
_cleanup_strv_free_ char **l = NULL;
const char *e;
int putenv_dup(const char *assignment, bool override);
int setenv_systemd_exec_pid(bool update_only);
+int setenv_systemd_log_level(void);
/* Parses and does sanity checks on an environment variable containing
* PATH-like colon-separated absolute paths */