[pve-devel] [RFC pve-qemu] Add systemd journal logging patch

Dietmar Maurer dietmar at proxmox.com
Tue Jun 30 18:28:01 CEST 2020


comments inline

> On 06/30/2020 2:06 PM Stefan Reiter <s.reiter at proxmox.com> wrote:
> 
>  
> Prints QEMU errors that occur *after* the "-daemonize" fork to the
> systemd journal, instead of pushing them into /dev/null like before.
> 
> Signed-off-by: Stefan Reiter <s.reiter at proxmox.com>
> ---
> 
> Useful for debugging rust panics for example. I'm sure there's other ways to go
> about this (log files? pass the journal fd from outside? pipe it into the
> journal somehow?) but this one seems simple enough, though it of course requires
> linking QEMU against libsystemd.
> 
> @dietmar: is this similar to what you had in mind?
> 
>  debian/control                                |  1 +
>  ...ct-stderr-to-journal-when-daemonized.patch | 50 +++++++++++++++++++
>  debian/patches/series                         |  1 +
>  3 files changed, 52 insertions(+)
>  create mode 100644 debian/patches/pve/0052-PVE-redirect-stderr-to-journal-when-daemonized.patch
> 
> diff --git a/debian/control b/debian/control
> index caceabb..e6d935d 100644
> --- a/debian/control
> +++ b/debian/control
> @@ -25,6 +25,7 @@ Build-Depends: autotools-dev,
>                 libseccomp-dev,
>                 libspice-protocol-dev (>= 0.12.14~),
>                 libspice-server-dev (>= 0.14.0~),
> +               libsystemd-dev,
>                 libusb-1.0-0-dev (>= 1.0.17-1),
>                 libusbredirparser-dev (>= 0.6-2),
>                 python3-minimal,
> diff --git a/debian/patches/pve/0052-PVE-redirect-stderr-to-journal-when-daemonized.patch b/debian/patches/pve/0052-PVE-redirect-stderr-to-journal-when-daemonized.patch
> new file mode 100644
> index 0000000..f73de53
> --- /dev/null
> +++ b/debian/patches/pve/0052-PVE-redirect-stderr-to-journal-when-daemonized.patch
> @@ -0,0 +1,50 @@
> +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
> +From: Stefan Reiter <s.reiter at proxmox.com>
> +Date: Tue, 30 Jun 2020 13:10:10 +0200
> +Subject: [PATCH] PVE: redirect stderr to journal when daemonized
> +
> +QEMU uses the logging for error messages usually, so LOG_ERR is most
> +fitting.
> +---
> + Makefile.objs | 1 +
> + os-posix.c    | 7 +++++--
> + 2 files changed, 6 insertions(+), 2 deletions(-)
> +
> +diff --git a/Makefile.objs b/Makefile.objs
> +index b7d58e592e..105f23bff7 100644
> +--- a/Makefile.objs
> ++++ b/Makefile.objs
> +@@ -55,6 +55,7 @@ common-obj-y += net/
> + common-obj-y += qdev-monitor.o
> + common-obj-$(CONFIG_WIN32) += os-win32.o
> + common-obj-$(CONFIG_POSIX) += os-posix.o
> ++os-posix.o-libs := -lsystemd
> + 
> + common-obj-$(CONFIG_LINUX) += fsdev/
> + 
> +diff --git a/os-posix.c b/os-posix.c
> +index 3cd52e1e70..ab4d052c62 100644
> +--- a/os-posix.c
> ++++ b/os-posix.c
> +@@ -28,6 +28,8 @@
> + #include <pwd.h>
> + #include <grp.h>
> + #include <libgen.h>
> ++#include <systemd/sd-journal.h>
> ++#include <syslog.h>
> + 
> + #include "qemu-common.h"
> + /* Needed early for CONFIG_BSD etc. */
> +@@ -309,9 +311,10 @@ void os_setup_post(void)
> + 
> +         dup2(fd, 0);
> +         dup2(fd, 1);

I guess we also want to redirect stdout. Or does that produce too much noise?

> +-        /* In case -D is given do not redirect stderr to /dev/null */
> ++        /* In case -D is given do not redirect stderr to journal */
> +         if (!qemu_logfile) {
> +-            dup2(fd, 2);
> ++            int journal_fd = sd_journal_stream_fd("QEMU", LOG_ERR, 0);
> ++            dup2(journal_fd, 2);
> +         }
> + 
> +         close(fd);
> diff --git a/debian/patches/series b/debian/patches/series
> index 5d6a5d6..e658c1a 100644
> --- a/debian/patches/series
> +++ b/debian/patches/series
> @@ -50,3 +50,4 @@ pve/0048-savevm-async-add-debug-timing-prints.patch
>  pve/0049-Add-some-qemu_vfree-statements-to-prevent-memory-lea.patch
>  pve/0050-Fix-backup-for-not-64k-aligned-storages.patch
>  pve/0051-PVE-Backup-Add-dirty-bitmap-tracking-for-incremental.patch
> +pve/0052-PVE-redirect-stderr-to-journal-when-daemonized.patch
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel




More information about the pve-devel mailing list