diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-04-21 17:26:04 +0200 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2017-03-14 08:07:34 +0100 |
commit | d44c666228d4872101eae5e55f44b1985476e7f2 (patch) | |
tree | 3e323c3df0929a5d80b37891d78b5447bba50a5c /src/shared/log.c | |
parent | ce7df9fb79cd1b48dfa9ddf8662a2f9ed2884eb3 (diff) |
log: move log_syntax() into src/shared/log.c, and make it more similar to the other log functions
Diffstat (limited to 'src/shared/log.c')
-rw-r--r-- | src/shared/log.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/shared/log.c b/src/shared/log.c index 85c0605bd..e8b63a3ed 100644 --- a/src/shared/log.c +++ b/src/shared/log.c @@ -29,6 +29,7 @@ #include <stddef.h> #include <printf.h> +#include "sd-messages.h" #include "log.h" #include "util.h" #include "missing.h" @@ -1064,3 +1065,58 @@ void log_received_signal(int level, const struct signalfd_siginfo *si) { void log_set_upgrade_syslog_to_journal(bool b) { upgrade_syslog_to_journal = b; } + +int log_syntax_internal( + const char *unit, + int level, + const char *config_file, + unsigned config_line, + int error, + const char *file, + int line, + const char *func, + const char *format, ...) { + + PROTECT_ERRNO; + char buffer[LINE_MAX]; + int r; + va_list ap; + + if (error < 0) + error = -error; + + if (_likely_(LOG_PRI(level) > log_max_level)) + return -error; + + if (log_target == LOG_TARGET_NULL) + return -error; + + if (error != 0) + errno = error; + + va_start(ap, format); + vsnprintf(buffer, sizeof(buffer), format, ap); + va_end(ap); + + if (unit) + 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; +} |