From 01efc71ddd2523594b94e8be00d9e51d6cdd6130 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Thu, 6 Oct 2022 14:51:04 +0200 Subject: log, conf: Add support for logging to file In some environments, such as KubeVirt pods, we might not have a system logger available. We could choose to run in foreground, but this takes away the convenient synchronisation mechanism derived from forking to background when interfaces are ready. Add optional logging to file with -l/--log-file and --log-size. Unfortunately, this means we need to duplicate features that are more appropriately implemented by a system logger, such as rotation. Keep that reasonably simple, by using fallocate() with range collapsing where supported (Linux kernel >= 3.15, extent-based ext4 and XFS) and falling back to an unsophisticated block-by-block moving of entries toward the beginning of the file once we reach the (mandatory) size limit. While at it, clarify the role of LOG_EMERG in passt.c. Signed-off-by: Stefano Brivio Reviewed-by: David Gibson --- passt.1 | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'passt.1') diff --git a/passt.1 b/passt.1 index 83395bc..64236b6 100644 --- a/passt.1 +++ b/passt.1 @@ -79,7 +79,7 @@ for performance reasons. .TP .BR \-d ", " \-\-debug -Be verbose, don't run in background. +Be verbose, don't run in background, don't log to the system logger. .TP .BR \-\-trace @@ -99,9 +99,19 @@ Default is to fork into background. .TP .BR \-e ", " \-\-stderr Log to standard error too. -Default is to log to system logger only, if started from an interactive +Default is to log to the system logger only, if started from an interactive terminal, and to both system logger and standard error otherwise. +.TP +.BR \-l ", " \-\-log-file " " \fIPATH\fR +Log to file \fIPATH\fR, not to standard error, and not to the system logger. + +.TP +.BR \-\-log-size " " \fISIZE\fR +Limit log file size to \fISIZE\fR bytes. When the log file is full, make room +for new entries by removing old ones at the beginning. This limit is mandatory. +Default is 1048576 (1 MiB). + .TP .BR \-\-runas " " \fIUID\fR|\fIUID:GID\fR|\fILOGIN\fR|\fILOGIN:GROUP\fR Attempt to change to given UID and corresponding group if UID is given, -- cgit v1.2.3