feat(logger): deliver stderr to systemd journal with per-record priority
When stderr is connected to journald, switch from the plain text handler to the native journal protocol via github.com/systemd/slog-journal. Each record now carries PRIORITY, MESSAGE, and slog attributes as structured fields, so journalctl -p and LogLevelMax= in unit files filter by severity instead of dropping everything at once. Detection follows systemd.exec(5): parse JOURNAL_STREAM as <dev>:<ino> and fstat(2) stderr to confirm the match, guarding against processes that inherit the env var but have stderr redirected elsewhere. The fstat path is Linux-only; other platforms fall through to the existing text handler. Also honour DEBUG_INVOCATION by raising stderr to Debug level, matching the behaviour of systemd.service(5) RestartMode=debug.
This commit is contained in:
8
logger/journald_other.go
Normal file
8
logger/journald_other.go
Normal file
@@ -0,0 +1,8 @@
|
||||
//go:build !linux
|
||||
|
||||
package logger
|
||||
|
||||
// stderrIsJournal always returns false on non-Linux platforms. The
|
||||
// systemd journal is Linux-only; developer workstations and other
|
||||
// targets fall back to the stderr text handler.
|
||||
func stderrIsJournal() bool { return false }
|
||||
Reference in New Issue
Block a user