From 975b004d07e472a4f7557f923fed228f3fa02f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Fri, 5 Jul 2019 10:32:53 +0100 Subject: [PATCH] logging: ensure virtlogd rollover takes priority over logrotate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The virtlogd config is set to rollover logs every 2 MB. Normally a logrotate config file is also installed to handle cases where virtlogd is disabled. This is set to rollover weekly with no size constraint. As a result logrotate can interfere with virtlogd's, rolling over files that virtlogd has already taken care of. This changes logrotate configs to rollover based on a max size constraint of 2 MB + 1 byte. When virtlogd is running the log files will never get this large, making logrotate a no-op. If the user changes the size in virtlogd's config to something larger, they are responsible for also changing the logrotate config suitably. The LXC/libxl drivers don't use virtlogd, but there logrotate config is altered to match the QEMU driver config, for the sake of consistency. Reviewed-by: Jim Fehlig Signed-off-by: Daniel P. Berrangé --- src/logging/virtlogd.conf | 6 ++++++ src/remote/libvirtd.libxl.logrotate.in | 2 +- src/remote/libvirtd.lxc.logrotate.in | 2 +- src/remote/libvirtd.qemu.logrotate.in | 10 +++++++++- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/logging/virtlogd.conf b/src/logging/virtlogd.conf index 72da7f0705..bc41edbc6b 100644 --- a/src/logging/virtlogd.conf +++ b/src/logging/virtlogd.conf @@ -90,6 +90,12 @@ #admin_max_clients = 5 # Maximum file size before rolling over. Defaults to 2 MB +# +# Beware that a logrotate config file might be installed too, +# to handle cases where virtlogd is disabled. To ensure that +# the logrotate config is a no-op when virtlogd is running, +# make sure that max_size here is smaller than size listed +# in the logrotate config. #max_size = 2097152 # Maximum number of backup files to keep. Defaults to 3, diff --git a/src/remote/libvirtd.libxl.logrotate.in b/src/remote/libvirtd.libxl.logrotate.in index cb7f07d846..1461c1efa1 100644 --- a/src/remote/libvirtd.libxl.logrotate.in +++ b/src/remote/libvirtd.libxl.logrotate.in @@ -1,5 +1,5 @@ @localstatedir@/log/libvirt/libxl/*.log { - weekly + size 2097153 missingok rotate 4 compress diff --git a/src/remote/libvirtd.lxc.logrotate.in b/src/remote/libvirtd.lxc.logrotate.in index 2bb9dfba12..b88dabb58e 100644 --- a/src/remote/libvirtd.lxc.logrotate.in +++ b/src/remote/libvirtd.lxc.logrotate.in @@ -1,5 +1,5 @@ @localstatedir@/log/libvirt/lxc/*.log { - weekly + size 2097153 missingok rotate 4 compress diff --git a/src/remote/libvirtd.qemu.logrotate.in b/src/remote/libvirtd.qemu.logrotate.in index cdb399ef23..78f2ca875e 100644 --- a/src/remote/libvirtd.qemu.logrotate.in +++ b/src/remote/libvirtd.qemu.logrotate.in @@ -1,5 +1,13 @@ @localstatedir@/log/libvirt/qemu/*.log { - weekly + # The QEMU driver is configured to use virtlogd by + # default, which will perform log rollover. + # This logrotate config is still installed for cases + # where the user has switched off virtlogd. + # + # If virtlogd is active, ensure that size here is + # larger than 'max_size' in the virtlogd config + # so that logrotate becomes a no-op + size 2097153 missingok rotate 4 compress