journal: log filtering options support in PID1
Define new unit parameter (LogFilterPatterns) to filter logs processed by journald. This option is used to store a regular expression which is carried from PID1 to systemd-journald through a cgroup xattrs: `user.journald_log_filter_patterns`.
This commit is contained in:
+15
-1
@@ -5250,9 +5250,10 @@ int exec_spawn(Unit *unit,
|
||||
if (r < 0)
|
||||
return log_unit_error_errno(unit, r, "Failed to create control group '%s': %m", subcgroup_path);
|
||||
|
||||
/* Normally we would not propagate the oomd xattrs to children but since we created this
|
||||
/* Normally we would not propagate the xattrs to children but since we created this
|
||||
* sub-cgroup internally we should do it. */
|
||||
cgroup_oomd_xattr_apply(unit, subcgroup_path);
|
||||
cgroup_log_xattr_apply(unit, subcgroup_path);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5406,6 +5407,8 @@ void exec_context_done(ExecContext *c) {
|
||||
c->log_level_max = -1;
|
||||
|
||||
exec_context_free_log_extra_fields(c);
|
||||
c->log_filter_allowed_patterns = set_free(c->log_filter_allowed_patterns);
|
||||
c->log_filter_denied_patterns = set_free(c->log_filter_denied_patterns);
|
||||
|
||||
c->log_ratelimit_interval_usec = 0;
|
||||
c->log_ratelimit_burst = 0;
|
||||
@@ -6000,6 +6003,17 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
|
||||
if (c->log_ratelimit_burst > 0)
|
||||
fprintf(f, "%sLogRateLimitBurst: %u\n", prefix, c->log_ratelimit_burst);
|
||||
|
||||
if (!set_isempty(c->log_filter_allowed_patterns) || !set_isempty(c->log_filter_denied_patterns)) {
|
||||
fprintf(f, "%sLogFilterPatterns:", prefix);
|
||||
|
||||
char *pattern;
|
||||
SET_FOREACH(pattern, c->log_filter_allowed_patterns)
|
||||
fprintf(f, " %s", pattern);
|
||||
SET_FOREACH(pattern, c->log_filter_denied_patterns)
|
||||
fprintf(f, " ~%s", pattern);
|
||||
fputc('\n', f);
|
||||
}
|
||||
|
||||
for (size_t j = 0; j < c->n_log_extra_fields; j++) {
|
||||
fprintf(f, "%sLogExtraFields: ", prefix);
|
||||
fwrite(c->log_extra_fields[j].iov_base,
|
||||
|
||||
Reference in New Issue
Block a user