X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fbasic%2Flog.c;h=2f54194ebd17bf4066ecf1a01418bd9f33ac1427;hb=62383061a34dc8233b3e26c49271d5cb43fcb0f6;hp=0783372c5aa0cc738d50a8572ddedf8870b76c65;hpb=ee3f331e539dc37e88e558583c8a9a7a2383f5e0;p=elogind.git diff --git a/src/basic/log.c b/src/basic/log.c index 0783372c5..2f54194eb 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -249,14 +249,14 @@ int log_open(void) { return 0; } - if (!IN_SET(log_target, LOG_TARGET_AUTO, LOG_TARGET_SAFE) || + if ((log_target != LOG_TARGET_AUTO && log_target != LOG_TARGET_SAFE) || getpid() == 1 || isatty(STDERR_FILENO) <= 0) { #if 0 /// elogind does not support logging to systemd-journald - if (IN_SET(log_target, LOG_TARGET_AUTO, - LOG_TARGET_JOURNAL_OR_KMSG, - LOG_TARGET_JOURNAL)) { + if (log_target == LOG_TARGET_AUTO || + log_target == LOG_TARGET_JOURNAL_OR_KMSG || + log_target == LOG_TARGET_JOURNAL) { r = log_open_journal(); if (r >= 0) { log_close_syslog(); @@ -266,8 +266,8 @@ int log_open(void) { } #endif // 0 - if (IN_SET(log_target, LOG_TARGET_SYSLOG_OR_KMSG, - LOG_TARGET_SYSLOG)) { + if (log_target == LOG_TARGET_SYSLOG_OR_KMSG || + log_target == LOG_TARGET_SYSLOG) { r = log_open_syslog(); if (r >= 0) { log_close_journal(); @@ -276,11 +276,11 @@ int log_open(void) { } } - if (IN_SET(log_target, LOG_TARGET_AUTO, - LOG_TARGET_SAFE, - LOG_TARGET_JOURNAL_OR_KMSG, - LOG_TARGET_SYSLOG_OR_KMSG, - LOG_TARGET_KMSG)) { + if (log_target == LOG_TARGET_AUTO || + log_target == LOG_TARGET_SAFE || + log_target == LOG_TARGET_JOURNAL_OR_KMSG || + log_target == LOG_TARGET_SYSLOG_OR_KMSG || + log_target == LOG_TARGET_KMSG) { r = log_open_kmsg(); if (r >= 0) { log_close_journal(); @@ -513,7 +513,7 @@ static int log_do_header( line ? "CODE_LINE=" : "", line ? 1 : 0, line, /* %.0d means no output too, special case for 0 */ line ? "\n" : "", - isempty(func) ? "" : "CODE_FUNC=", + isempty(func) ? "" : "CODE_FUNCTION=", isempty(func) ? "" : func, isempty(func) ? "" : "\n", error ? "ERRNO=" : "", @@ -603,9 +603,9 @@ static int log_dispatch( *(e++) = 0; #if 0 /// elogind does not support logging to systemd-journald - if (IN_SET(log_target, LOG_TARGET_AUTO, - LOG_TARGET_JOURNAL_OR_KMSG, - LOG_TARGET_JOURNAL)) { + if (log_target == LOG_TARGET_AUTO || + log_target == LOG_TARGET_JOURNAL_OR_KMSG || + log_target == LOG_TARGET_JOURNAL) { k = write_to_journal(level, error, file, line, func, object_field, object, extra_field, extra, buffer); if (k < 0) { @@ -616,8 +616,8 @@ static int log_dispatch( } #endif // 0 - if (IN_SET(log_target, LOG_TARGET_SYSLOG_OR_KMSG, - LOG_TARGET_SYSLOG)) { + if (log_target == LOG_TARGET_SYSLOG_OR_KMSG || + log_target == LOG_TARGET_SYSLOG) { k = write_to_syslog(level, error, file, line, func, buffer); if (k < 0) { @@ -628,11 +628,11 @@ static int log_dispatch( } if (k <= 0 && - IN_SET(log_target, LOG_TARGET_AUTO, - LOG_TARGET_SAFE, - LOG_TARGET_SYSLOG_OR_KMSG, - LOG_TARGET_JOURNAL_OR_KMSG, - LOG_TARGET_KMSG)) { + (log_target == LOG_TARGET_AUTO || + log_target == LOG_TARGET_SAFE || + log_target == LOG_TARGET_SYSLOG_OR_KMSG || + log_target == LOG_TARGET_JOURNAL_OR_KMSG || + log_target == LOG_TARGET_KMSG)) { k = write_to_kmsg(level, error, file, line, func, buffer); if (k < 0) { @@ -898,9 +898,9 @@ int log_struct_internal( level = log_facility | LOG_PRI(level); #if 0 /// elogind does not support logging to systemd-journald - if (IN_SET(log_target, LOG_TARGET_AUTO, - LOG_TARGET_JOURNAL_OR_KMSG, - LOG_TARGET_JOURNAL) && + if ((log_target == LOG_TARGET_AUTO || + log_target == LOG_TARGET_JOURNAL_OR_KMSG || + log_target == LOG_TARGET_JOURNAL) && journal_fd >= 0) { char header[LINE_MAX]; struct iovec iovec[17] = {}; @@ -999,30 +999,24 @@ static int parse_proc_cmdline_item(const char *key, const char *value, void *dat if (streq(key, "debug") && !value) log_set_max_level(LOG_DEBUG); - else if (proc_cmdline_key_streq(key, "systemd.log_target")) { - - if (proc_cmdline_value_missing(key, value)) - return 0; + else if (streq(key, "systemd.log_target") && value) { if (log_set_target_from_string(value) < 0) log_warning("Failed to parse log target '%s'. Ignoring.", value); - } else if (proc_cmdline_key_streq(key, "systemd.log_level")) { - - if (proc_cmdline_value_missing(key, value)) - return 0; + } else if (streq(key, "systemd.log_level") && value) { if (log_set_max_level_from_string(value) < 0) log_warning("Failed to parse log level '%s'. Ignoring.", value); - } else if (proc_cmdline_key_streq(key, "systemd.log_color")) { + } else if (streq(key, "systemd.log_color") && value) { - if (log_show_color_from_string(value ?: "1") < 0) + if (log_show_color_from_string(value) < 0) log_warning("Failed to parse log color setting '%s'. Ignoring.", value); - } else if (proc_cmdline_key_streq(key, "systemd.log_location")) { + } else if (streq(key, "systemd.log_location") && value) { - if (log_show_location_from_string(value ?: "1") < 0) + if (log_show_location_from_string(value) < 0) log_warning("Failed to parse log location setting '%s'. Ignoring.", value); } @@ -1033,9 +1027,10 @@ void log_parse_environment(void) { const char *e; if (get_ctty_devnr(0, NULL) < 0) - /* Only try to read the command line in daemons. We assume that anything that has a controlling tty is - user stuff. */ - (void) proc_cmdline_parse(parse_proc_cmdline_item, NULL, PROC_CMDLINE_STRIP_RD_PREFIX); + /* Only try to read the command line in daemons. + We assume that anything that has a controlling + tty is user stuff. */ + (void) parse_proc_cmdline(parse_proc_cmdline_item, NULL, true); e = secure_getenv("SYSTEMD_LOG_TARGET"); if (e && log_set_target_from_string(e) < 0) @@ -1101,8 +1096,8 @@ int log_show_location_from_string(const char *e) { } bool log_on_console(void) { - if (IN_SET(log_target, LOG_TARGET_CONSOLE, - LOG_TARGET_CONSOLE_PREFIXED)) + if (log_target == LOG_TARGET_CONSOLE || + log_target == LOG_TARGET_CONSOLE_PREFIXED) return true; return syslog_fd < 0 && kmsg_fd < 0 && journal_fd < 0; @@ -1161,8 +1156,8 @@ int log_syntax_internal( PROTECT_ERRNO; char buffer[LINE_MAX]; + int r; va_list ap; - const char *unit_fmt = NULL; if (error < 0) error = -error; @@ -1181,15 +1176,24 @@ int log_syntax_internal( va_end(ap); if (unit) - unit_fmt = getpid() == 1 ? "UNIT=%s" : "USER_UNIT=%s"; - - return log_struct_internal( - level, error, - file, line, func, - "MESSAGE_ID=" SD_MESSAGE_INVALID_CONFIGURATION_STR, - "CONFIG_FILE=%s", config_file, - "CONFIG_LINE=%u", config_line, - LOG_MESSAGE("%s:%u: %s", config_file, config_line, buffer), - unit_fmt, unit, - NULL); + r = log_struct_internal( + level, error, + file, line, func, + getpid() == 1 ? "UNIT=%s" : "USER_UNIT=%s", unit, + LOG_MESSAGE_ID(SD_MESSAGE_INVALID_CONFIGURATION), + "CONFIG_FILE=%s", config_file, + "CONFIG_LINE=%u", config_line, + LOG_MESSAGE("[%s:%u] %s", config_file, config_line, buffer), + NULL); + else + r = log_struct_internal( + level, error, + file, line, func, + LOG_MESSAGE_ID(SD_MESSAGE_INVALID_CONFIGURATION), + "CONFIG_FILE=%s", config_file, + "CONFIG_LINE=%u", config_line, + LOG_MESSAGE("[%s:%u] %s", config_file, config_line, buffer), + NULL); + + return r; }