mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-03-08 20:58:20 +03:00
Merge pull request #19022 from poettering/journal-dont-lose-facility
journald: don't lose facility of log streams on journald restart
This commit is contained in:
commit
1a2c2e1222
@ -334,6 +334,22 @@ static int stdout_stream_log(
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int syslog_parse_priority_and_facility(const char *s) {
|
||||
int prio, r;
|
||||
|
||||
/* Parses both facility and priority in one value, i.e. is different from log_level_from_string()
|
||||
* which only parses the priority and refuses any facility value */
|
||||
|
||||
r = safe_atoi(s, &prio);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (prio < 0 || prio > 999)
|
||||
return -ERANGE;
|
||||
|
||||
return prio;
|
||||
}
|
||||
|
||||
static int stdout_stream_line(StdoutStream *s, char *p, LineBreak line_break) {
|
||||
char *orig;
|
||||
int r;
|
||||
@ -373,22 +389,22 @@ static int stdout_stream_line(StdoutStream *s, char *p, LineBreak line_break) {
|
||||
s->state = STDOUT_STREAM_PRIORITY;
|
||||
return 0;
|
||||
|
||||
case STDOUT_STREAM_PRIORITY:
|
||||
r = safe_atoi(p, &s->priority);
|
||||
if (r < 0 || s->priority < 0 || s->priority > 999) {
|
||||
log_warning("Failed to parse log priority line.");
|
||||
return -EINVAL;
|
||||
}
|
||||
case STDOUT_STREAM_PRIORITY: {
|
||||
int priority;
|
||||
|
||||
priority = syslog_parse_priority_and_facility(p);
|
||||
if (priority < 0)
|
||||
return log_warning_errno(priority, "Failed to parse log priority line: %m");
|
||||
|
||||
s->priority = priority;
|
||||
s->state = STDOUT_STREAM_LEVEL_PREFIX;
|
||||
return 0;
|
||||
}
|
||||
|
||||
case STDOUT_STREAM_LEVEL_PREFIX:
|
||||
r = parse_boolean(p);
|
||||
if (r < 0) {
|
||||
log_warning("Failed to parse level prefix line.");
|
||||
return -EINVAL;
|
||||
}
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to parse level prefix line: %m");
|
||||
|
||||
s->level_prefix = r;
|
||||
s->state = STDOUT_STREAM_FORWARD_TO_SYSLOG;
|
||||
@ -396,10 +412,8 @@ static int stdout_stream_line(StdoutStream *s, char *p, LineBreak line_break) {
|
||||
|
||||
case STDOUT_STREAM_FORWARD_TO_SYSLOG:
|
||||
r = parse_boolean(p);
|
||||
if (r < 0) {
|
||||
log_warning("Failed to parse forward to syslog line.");
|
||||
return -EINVAL;
|
||||
}
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to parse forward to syslog line: %m");
|
||||
|
||||
s->forward_to_syslog = r;
|
||||
s->state = STDOUT_STREAM_FORWARD_TO_KMSG;
|
||||
@ -407,10 +421,8 @@ static int stdout_stream_line(StdoutStream *s, char *p, LineBreak line_break) {
|
||||
|
||||
case STDOUT_STREAM_FORWARD_TO_KMSG:
|
||||
r = parse_boolean(p);
|
||||
if (r < 0) {
|
||||
log_warning("Failed to parse copy to kmsg line.");
|
||||
return -EINVAL;
|
||||
}
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to parse copy to kmsg line: %m");
|
||||
|
||||
s->forward_to_kmsg = r;
|
||||
s->state = STDOUT_STREAM_FORWARD_TO_CONSOLE;
|
||||
@ -418,10 +430,8 @@ static int stdout_stream_line(StdoutStream *s, char *p, LineBreak line_break) {
|
||||
|
||||
case STDOUT_STREAM_FORWARD_TO_CONSOLE:
|
||||
r = parse_boolean(p);
|
||||
if (r < 0) {
|
||||
log_warning("Failed to parse copy to console line.");
|
||||
return -EINVAL;
|
||||
}
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to parse copy to console line.");
|
||||
|
||||
s->forward_to_console = r;
|
||||
s->state = STDOUT_STREAM_RUNNING;
|
||||
@ -750,7 +760,7 @@ static int stdout_stream_load(StdoutStream *stream, const char *fname) {
|
||||
if (priority) {
|
||||
int p;
|
||||
|
||||
p = log_level_from_string(priority);
|
||||
p = syslog_parse_priority_and_facility(priority);
|
||||
if (p >= 0)
|
||||
stream->priority = p;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user