Merge pull request 'feat: add option to filter logs by unit or slice' (#128) from nhnn/selfprivacy-rest-api:logs-filtering into master

Reviewed-on: https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api/pulls/128
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
This commit is contained in:
Inex Code 2024-07-26 16:33:05 +03:00
commit 40b8eb06d0
2 changed files with 14 additions and 1 deletions

View file

@ -75,6 +75,10 @@ class Logs:
up_cursor: str | None = None,
# All entries returned will be greater than this cursor. Sets lower bound on results.
down_cursor: str | None = None,
# All entries will be from a specific systemd slice
filterBySlice: str | None = None,
# All entries will be from a specific systemd unit
filterByUnit: str | None = None,
) -> PaginatedEntries:
if limit > 50:
raise Exception("You can't fetch more than 50 entries via single request.")
@ -82,7 +86,7 @@ class Logs:
list(
map(
lambda x: LogEntry(x),
get_paginated_logs(limit, up_cursor, down_cursor),
get_paginated_logs(limit, up_cursor, down_cursor, filterBySlice, filterByUnit),
)
)
)

View file

@ -24,9 +24,18 @@ def get_paginated_logs(
up_cursor: str | None = None,
# All entries returned will be greater than this cursor. Sets lower bound on results.
down_cursor: str | None = None,
# All entries will be from a specific systemd slice
filterBySlice: str | None = None,
# All entries will be from a specific systemd unit
filterByUnit: str | None = None,
):
j = journal.Reader()
if filterBySlice:
j.add_match("_SYSTEMD_SLICE=" + filterBySlice)
if filterByUnit:
j.add_match("_SYSTEMD_UNIT=" + filterByUnit)
if up_cursor is None and down_cursor is None:
j.seek_tail()