[Service]
Type=oneshot
-ExecStart=sh -c 'echo "Logging from the service, and ~more~ foo bar"'
# If the service finishes extremely fast, journald cannot find the source of the
# stream. Hence, we need to call 'journalctl --sync' before service finishes.
-ExecStart=journalctl --sync
+ExecStart=sh -c 'echo "Logging from the service, and ~more~ foo bar"; journalctl --sync'
SyslogLevel=notice
LogLevelMax=info
exit 0
fi
+# Unfortunately, journalctl -I/--invocation= is unstable when debug logging is enabled on service manager.
+SAVED_LOG_LEVEL=$(systemctl log-level)
+systemctl log-level info
+
NEEDS_RELOAD=
add_logs_filtering_override() {
run_service_and_fetch_logs() {
local unit="${1:?}"
- local start
if [[ -n "$NEEDS_RELOAD" ]]; then
systemctl daemon-reload
NEEDS_RELOAD=
fi
- journalctl --sync
- start="$(date '+%Y-%m-%d %T.%6N')"
systemctl start "$unit"
- journalctl -q -u "$unit" -S "$start" -p notice
+ journalctl -q -u "$unit" -I -p notice
}
at_exit() {
add_logs_filtering_override "delegated-cgroup-filtering.service" "01-discard-hello" "~hello"
[[ -z $(run_service_and_fetch_logs "delegated-cgroup-filtering.service") ]]
+
+systemctl log-level "$SAVED_LOG_LEVEL"
echo "parent_process: hello, world!"
echo "parent_process: hello, people!"
-sleep 2
+
+# If the service finishes extremely fast, journald cannot find the source of the
+# stream. Hence, we need to call 'journalctl --sync' before service finishes.
+journalctl --sync