From 6942161b44344a20435824c4816404a03da158f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 11 Dec 2024 23:32:45 +0100 Subject: [PATCH] =?UTF-8?q?services:=20Switch=20from=20mcron=20+=20Rottlog?= =?UTF-8?q?=20to=20Shepherd=E2=80=99s=20log=20rotation.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/services/admin.scm (unattended-upgrade-log-rotations): Remove. (unattended-upgrade-service-type): Remove ‘rottlog-service-type’ extension. * gnu/services/audio.scm (mpd-log-rotation): Remove. (mpd-service-type): Remove ‘rottlog-service-type’ extension. (mympd-log-rotation): Remove. (mympd-service-type): Remove rottlog-service-type’ extension. * gnu/services/base.scm (%guix-publish-log-rotations): Remove. (guix-publish-service-type): Remove ‘rottlog-service-type’ extension. (%base-services): Instantiate ‘log-rotation-service-type’ instead of ‘rottlog-service-type’. (%default-syslog-files): New variable. (syslog-service-type): Extend ‘log-rotation-service-type’. * gnu/services/cuirass.scm (cuirass-log-rotations): Remove. (cuirass-service-type): Remove ‘rottlog-service-type’ extension. (cuirass-remote-worker-log-rotations): Remove. (cuirass-remote-worker-service-type): Remove ‘rottlog-service-type’ extension. * gnu/services/file-sharing.scm (%transmission-daemon-log-rotations): Remove. (transmission-daemon-service-type): Remove ‘rottlog-service-type’ extension. * gnu/services/linux.scm (%earlyoom-log-rotation): Remove. (earlyoom-service-type): Remove ‘rottlog-service-type’ extension. * gnu/services/networking.scm (%ntp-log-rotation): Remove. (ntp-service-type): Remove ‘rottlog-service-type’ extension. (openntpd-service-type): Likewise. (%connman-log-rotation): Remove. (connman-service-type): Remove ‘rottlog-service-type’ extension. (%hostapd-log-rotation): Remove. (hostapd-service-type): Remove ‘rottlog-service-type’ extension. (%pagekite-log-rotation): Remove. (pagekite-service-type): Remove ‘rottlog-service-type’ extension. (%yggdrasil-log-rotation): Remove. (yggdrasil-service-type): Remove ‘rottlog-service-type’ extension. (%ipfs-log-rotation): Remove. (ipfs-service-type): Remove ‘rottlog-service-type’ extension. (%keepalived-log-rotation): Remove. (keepalived-service-type): Remove ‘rottlog-service-type’ extension. * gnu/services/web.scm (%hpcguix-web-log-rotations): Remove. (hpcguix-web-service-type): Remove ‘rottlog-service-type’ extension. (%mumi-log-rotations): Remove. (mumi-service-type): Remove ‘rottlog-service-type’ extension. * doc/guix.texi (Log Rotation): Adjust text regarding which one is in ‘%base-services’. Change-Id: I8802d4c2337a1e08e3c084d6217f76527d7ee1fb --- doc/guix.texi | 5 +-- gnu/services/admin.scm | 9 +----- gnu/services/audio.scm | 26 ++------------- gnu/services/base.scm | 22 ++++++------- gnu/services/cuirass.scm | 27 +--------------- gnu/services/file-sharing.scm | 6 ---- gnu/services/linux.scm | 8 +---- gnu/services/networking.scm | 61 +++++------------------------------ gnu/services/web.scm | 17 +--------- 9 files changed, 28 insertions(+), 153 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 3a6944ccfee06d1e019c3754cea95661b3ab8f4b..16a9e5a3336a6c3f208e4ce7dbf5912ddf0dd9a7 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -20902,6 +20902,9 @@ You can also list files subject to rotation with @command{herd files log-rotation} and trigger rotation manually with @command{herd trigger log-rotation}. +This service is part of @code{%base-services}, and thus enabled by +default, with the default settings. + @defvar log-rotation-service-type This is the type of the log rotation service. Its associated value must be a @code{log-rotation-configuration} record, as discussed below. @@ -20950,8 +20953,6 @@ An alternative log rotation service relying on GNU@tie{}Rot[t]log, a log rotation tool (@pxref{Top,,, rottlog, GNU Rot[t]log Manual}), is also provided. -This service is part of @code{%base-services}, and thus enabled by -default, with the default settings, for commonly encountered log files. The example below shows how to extend it with an additional @dfn{rotation}, should you need to do that (usually, services that produce log files already take care of that): diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm index 735ba3f7beac9e3055092eff072a847b5289a314..f3331ae835dd51134a0b0d11c688c12f8a8186c0 100644 --- a/gnu/services/admin.scm +++ b/gnu/services/admin.scm @@ -670,19 +670,12 @@ which lets you search for packages that provide a given file.") (documentation "Trigger unattended system upgrade.") (procedure #~trigger-timer))))))) -(define (unattended-upgrade-log-rotations config) - (list (log-rotation - (files - (list (unattended-upgrade-configuration-log-file config)))))) - (define unattended-upgrade-service-type (service-type (name 'unattended-upgrade) (extensions (list (service-extension shepherd-root-service-type - unattended-upgrade-shepherd-services) - (service-extension rottlog-service-type - unattended-upgrade-log-rotations))) + unattended-upgrade-shepherd-services))) (description "Periodically upgrade the system from the current configuration.") (default-value (unattended-upgrade-configuration)))) diff --git a/gnu/services/audio.scm b/gnu/services/audio.scm index 5d2cd56a17fd3f4a0951387899ad6806008cff47..6515d53dbd69e7f7ddefa3537cc7eb054919e570 100644 --- a/gnu/services/audio.scm +++ b/gnu/services/audio.scm @@ -579,17 +579,6 @@ appended to the configuration.") "mpd.conf" (serialize-configuration configuration mpd-configuration-fields))) -(define (mpd-log-rotation config) - (match-record config - (log-file) - (if (string=? "syslog" log-file) - '() ;nothing to do - (list (log-rotation - (files (list log-file)) - (post-rotate #~(begin - (use-modules (gnu services herd)) - (with-shepherd-action 'mpd ('reopen) #f)))))))) - (define (mpd-shepherd-service config) (match-record config (user package shepherd-requirement @@ -675,8 +664,7 @@ appended to the configuration.") (extensions (list (service-extension shepherd-root-service-type (compose list mpd-shepherd-service)) - (service-extension account-service-type mpd-accounts) - (service-extension rottlog-service-type mpd-log-rotation))) + (service-extension account-service-type mpd-accounts))) (default-value (mpd-configuration)))) @@ -953,14 +941,6 @@ prompting a pin from the user.") user))) (list user group)))) -(define (mympd-log-rotation config) - (match-record config - (log-to) - (if (maybe-value-set? log-to) - (list (log-rotation - (files (list log-to)))) - '()))) - (define mympd-service-type (service-type (name 'mympd) @@ -970,8 +950,6 @@ prompting a pin from the user.") (service-extension account-service-type mympd-accounts) (service-extension special-files-service-type - mympd-serialize-configuration) - (service-extension rottlog-service-type - mympd-log-rotation))) + mympd-serialize-configuration))) (description "Run myMPD, a frontend for MPD. (Music Player Daemon)") (default-value (mympd-configuration)))) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index d67c16a7209fa4cbef31a796f956e2d0981a13c2..5967457002d33ef0350f160e625a0bb57ff51446 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013-2024 Ludovic Courtès +;;; Copyright © 2013-2025 Ludovic Courtès ;;; Copyright © 2015, 2016 Alex Kost ;;; Copyright © 2015, 2016, 2020 Mark H Weaver ;;; Copyright © 2015 Sou Bunnbu @@ -1685,12 +1685,20 @@ reload its settings file."))) #:pid-file "/var/run/syslog.pid")) (stop #~(make-kill-destructor)))) +(define %default-syslog-files + ;; List of files usually produced by syslogd that should be rotated. + '("/var/log/messages" "/var/log/secure" "/var/log/debug" + "/var/log/maillog")) + (define syslog-service-type (service-type (name 'syslog) (default-value (syslog-configuration)) (extensions (list (service-extension shepherd-root-service-type - (compose list syslog-shepherd-service)) + (compose list + syslog-shepherd-service)) + (service-extension log-rotation-service-type + (const %default-syslog-files)) (service-extension etc-service-type syslog-etc))) (description "Run the syslog daemon, @command{syslogd}, which is responsible for logging system messages."))) @@ -2354,12 +2362,6 @@ raise a deprecation warning if the 'compression-level' field was used." (home-directory "/var/empty") (shell (file-append shadow "/sbin/nologin"))))) -(define %guix-publish-log-rotations - (list (log-rotation - (files (list "/var/log/guix-publish.log")) - (options `("rotate 4" ;don't keep too many of them - ,@%default-log-rotation-options))))) - (define (guix-publish-activation config) (let ((cache (guix-publish-configuration-cache config))) (if cache @@ -2381,8 +2383,6 @@ raise a deprecation warning if the 'compression-level' field was used." guix-publish-shepherd-service) (service-extension account-service-type (const %guix-publish-accounts)) - (service-extension rottlog-service-type - (const %guix-publish-log-rotations)) (service-extension activation-service-type guix-publish-activation))) (default-value (guix-publish-configuration)) @@ -3748,7 +3748,7 @@ login manager daemon.") (service guix-service-type) (service nscd-service-type) - (service rottlog-service-type) + (service log-rotation-service-type) ;; Periodically delete old build logs. (service log-cleanup-service-type diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm index 2165059fd2d2620f188ac8721ee7305b85944b57..08a146f9803873b3d4e885ae0f1062eade9af847 100644 --- a/gnu/services/cuirass.scm +++ b/gnu/services/cuirass.scm @@ -340,20 +340,6 @@ (when #$remote-cache (chown #$remote-cache uid gid))))))) -(define (cuirass-log-rotations config) - "Return the list of log rotations that corresponds to CONFIG." - (list (log-rotation - (files (append (list (cuirass-configuration-log-file config) - (cuirass-configuration-web-log-file config)) - (let ((server - (cuirass-configuration-remote-server config))) - (if server - (list (cuirass-remote-server-log-file server)) - '())))) - (frequency 'weekly) - (options `("rotate 40" ;worth keeping - ,@%default-log-rotation-options))))) - (define cuirass-service-type (service-type (name 'cuirass) @@ -361,7 +347,6 @@ (list (service-extension profile-service-type ;for 'info cuirass' (compose list cuirass-configuration-cuirass)) - (service-extension rottlog-service-type cuirass-log-rotations) (service-extension activation-service-type cuirass-activation) (service-extension shepherd-root-service-type cuirass-shepherd-service) (service-extension account-service-type cuirass-account) @@ -454,14 +439,6 @@ CONFIG." #:log-file #$log-file)) (stop #~(make-kill-destructor)))))) -(define (cuirass-remote-worker-log-rotations config) - "Return the list of log rotations that corresponds to CONFIG." - (list (log-rotation - (files (list (cuirass-remote-worker-log-file config))) - (frequency 'weekly) - (options `("rotate 4" ;don't keep too many of them - ,@%default-log-rotation-options))))) - (define cuirass-remote-worker-service-type (service-type (name 'cuirass-remote-worker) @@ -469,8 +446,6 @@ CONFIG." (list (service-extension shepherd-root-service-type cuirass-remote-worker-shepherd-service) (service-extension account-service-type - (const %cuirass-remote-worker-accounts)) - (service-extension rottlog-service-type - cuirass-remote-worker-log-rotations))) + (const %cuirass-remote-worker-accounts)))) (description "Run the Cuirass remote build worker service."))) diff --git a/gnu/services/file-sharing.scm b/gnu/services/file-sharing.scm index 75e99f20b709a7533463de76af826a9bf17fd75e..6b25cd420fdcf2d6a95a013e9ec4274ac5b02462 100644 --- a/gnu/services/file-sharing.scm +++ b/gnu/services/file-sharing.scm @@ -701,10 +701,6 @@ running.")))))))))))) (shell (file-append shadow "/sbin/nologin")) (system? #t)))) -(define %transmission-daemon-log-rotations - (list (log-rotation - (files (list %transmission-daemon-log-file))))) - (define (transmission-daemon-computed-settings-file config) "Return a @code{computed-file} object that, when unquoted in a G-expression, produces a Transmission settings file (@file{settings.json}) matching CONFIG." @@ -785,8 +781,6 @@ produces a Transmission settings file (@file{settings.json}) matching CONFIG." transmission-daemon-shepherd-service) (service-extension account-service-type (const %transmission-daemon-accounts)) - (service-extension rottlog-service-type - (const %transmission-daemon-log-rotations)) (service-extension activation-service-type transmission-daemon-activation))) (default-value (transmission-daemon-configuration)) diff --git a/gnu/services/linux.scm b/gnu/services/linux.scm index 9955a11e640c3d993123674886c84a8410912407..e683da6bac80205be90c181dcbe27935b71c449c 100644 --- a/gnu/services/linux.scm +++ b/gnu/services/linux.scm @@ -181,19 +181,13 @@ representation." #:log-file "/var/log/earlyoom.log")) (stop #~(make-kill-destructor)))) -(define %earlyoom-log-rotation - (list (log-rotation - (files '("/var/log/earlyoom.log"))))) - (define earlyoom-service-type (service-type (name 'earlyoom) (default-value (earlyoom-configuration)) (extensions (list (service-extension shepherd-root-service-type - (compose list earlyoom-shepherd-service)) - (service-extension rottlog-service-type - (const %earlyoom-log-rotation)))) + (compose list earlyoom-shepherd-service)))) (description "Run @command{earlyoom}, a daemon that quickly responds to @acronym{OOM, out-of-memory} conditions by terminating relevant processes."))) diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 48a86b369410d9c48fe18983c471ac6c9250d057..af28bd0626b432e617bb08bcf2cf5920d8d36bb2 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -496,11 +496,6 @@ daemon is responsible for allocating IP addresses to its client."))) ;;; NTP. ;;; - -(define %ntp-log-rotation - (list (log-rotation - (files '("/var/log/ntpd.log"))))) - (define ntp-server-types (make-enumeration '(pool server @@ -634,9 +629,7 @@ restrict source notrap nomodify noquery\n")) (service-extension account-service-type (const %ntp-accounts)) (service-extension activation-service-type - ntp-service-activation) - (service-extension rottlog-service-type - (const %ntp-log-rotation)))) + ntp-service-activation))) (description "Run the @command{ntpd}, the Network Time Protocol (NTP) daemon of the @uref{http://www.ntp.org, Network Time Foundation}. The daemon @@ -745,9 +738,7 @@ will keep the system clock synchronized with that of the given servers.") (service-extension profile-service-type (compose list openntpd-configuration-openntpd)) (service-extension activation-service-type - openntpd-service-activation) - (service-extension rottlog-service-type - (const %ntp-log-rotation)))) + openntpd-service-activation))) (default-value (openntpd-configuration)) (description "Run the @command{ntpd}, the Network Time Protocol (NTP) @@ -1699,10 +1690,6 @@ set @file{/dev/null}.") #:log-file "/var/log/connman.log")) (stop #~(make-kill-destructor))))))) -(define %connman-log-rotation - (list (log-rotation - (files '("/var/log/connman.log"))))) - (define connman-service-type (let ((connman-package (compose list connman-configuration-connman))) (service-type (name 'connman) @@ -1717,9 +1704,7 @@ set @file{/dev/null}.") connman-activation) ;; Add connman to the system profile. (service-extension profile-service-type - connman-package) - (service-extension rottlog-service-type - (const %connman-log-rotation)))) + connman-package))) (default-value (connman-configuration)) (description "Run @url{https://01.org/connman,Connman}, @@ -1960,18 +1945,12 @@ extra-settings "\n")))) #:log-file "/var/log/hostapd.log")) (stop #~(make-kill-destructor))))) -(define %hostapd-log-rotation - (list (log-rotation - (files '("/var/log/hostapd.log"))))) - (define hostapd-service-type (service-type (name 'hostapd) (extensions (list (service-extension shepherd-root-service-type - hostapd-shepherd-services) - (service-extension rottlog-service-type - (const %hostapd-log-rotation)))) + hostapd-shepherd-services))) (description "Run the @uref{https://w1.fi/hostapd/, hostapd} daemon for Wi-Fi access points and authentication servers."))) @@ -2272,10 +2251,6 @@ table inet filter { ;; SIGTERM doesn't always work for some reason. (stop #~(make-kill-destructor SIGINT)))))) -(define %pagekite-log-rotation - (list (log-rotation - (files '("/var/log/pagekite.log"))))) - (define %pagekite-accounts (list (user-group (name "pagekite") (system? #t)) (user-account @@ -2294,9 +2269,7 @@ table inet filter { (list (service-extension shepherd-root-service-type (compose list pagekite-shepherd-service)) (service-extension account-service-type - (const %pagekite-accounts)) - (service-extension rottlog-service-type - (const %pagekite-log-rotation)))) + (const %pagekite-accounts)))) (description "Run @url{https://pagekite.net/,PageKite}, a tunneling solution to make local servers publicly accessible on the web, even behind NATs and firewalls."))) @@ -2387,10 +2360,6 @@ local servers publicly accessible on the web, even behind NATs and firewalls.")) #:group "yggdrasil")) (stop #~(make-kill-destructor))))) -(define %yggdrasil-log-rotation - (list (log-rotation - (files '("/var/log/yggdrasil.log"))))) - (define %yggdrasil-accounts (list (user-group (name "yggdrasil") (system? #t)))) @@ -2406,9 +2375,7 @@ See @command{yggdrasil -genconf} for config options.") (service-extension account-service-type (const %yggdrasil-accounts)) (service-extension profile-service-type - (compose list yggdrasil-configuration-package)) - (service-extension rottlog-service-type - (const %yggdrasil-log-rotation)))))) + (compose list yggdrasil-configuration-package)))))) ;;; @@ -2478,10 +2445,6 @@ See @command{yggdrasil -genconf} for config options.") #:environment-variables #$%ipfs-environment)) (stop #~(make-kill-destructor))))) -(define %ipfs-log-rotation - (list (log-rotation - (files '("/var/log/ipfs.log"))))) - (define (%ipfs-activation config) "Return an activation gexp for IPFS with CONFIG" (define (exec-command . args) @@ -2537,9 +2500,7 @@ See @command{yggdrasil -genconf} for config options.") (service-extension activation-service-type %ipfs-activation) (service-extension shepherd-root-service-type - ipfs-shepherd-service) - (service-extension rottlog-service-type - (const %ipfs-log-rotation)))) + ipfs-shepherd-service))) (default-value (ipfs-configuration)) (description "Run @command{ipfs daemon}, the reference implementation @@ -2575,16 +2536,10 @@ of the IPFS peer-to-peer storage network."))) (respawn? #f) (stop #~(make-kill-destructor)))))) -(define %keepalived-log-rotation - (list (log-rotation - (files '("/var/log/keepalived.log"))))) - (define keepalived-service-type (service-type (name 'keepalived) (extensions (list (service-extension shepherd-root-service-type - keepalived-shepherd-service) - (service-extension rottlog-service-type - (const %keepalived-log-rotation)))) + keepalived-shepherd-service))) (description "Run @uref{https://www.keepalived.org/, Keepalived} routing software."))) diff --git a/gnu/services/web.scm b/gnu/services/web.scm index 2d0aba94a1b8e6fe976ac143fcfe2d1ca17c59e2..f5de5997acb62a18b93a88cef311d67ecb2c4d9b 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -1282,11 +1282,6 @@ a webserver.") (define %hpcguix-web-log-file "/var/log/hpcguix-web.log") -(define %hpcguix-web-log-rotations - (list (log-rotation - (files (list %hpcguix-web-log-file)) - (frequency 'weekly)))) - (define (hpcguix-web-shepherd-service config) (let* ((specs (hpcguix-web-configuration-specs config)) (config-file (and specs (scheme-file "hpcguix-web.scm" specs))) @@ -1324,8 +1319,6 @@ a webserver.") (const %hpcguix-web-accounts)) (service-extension activation-service-type (const %hpcguix-web-activation)) - (service-extension rottlog-service-type - (const %hpcguix-web-log-rotations)) (service-extension shepherd-root-service-type (compose list hpcguix-web-shepherd-service)))) (default-value (hpcguix-web-configuration)))) @@ -2121,12 +2114,6 @@ WSGIPassAuthorization On #:log-file #$%mumi-mailer-log)) (stop #~(make-kill-destructor))))))) -(define %mumi-log-rotations - (list (log-rotation - (files (list %mumi-log - %mumi-mailer-log - %mumi-worker-log))))) - (define mumi-service-type (service-type (name 'mumi) @@ -2136,9 +2123,7 @@ WSGIPassAuthorization On (service-extension account-service-type (const %mumi-accounts)) (service-extension shepherd-root-service-type - mumi-shepherd-services) - (service-extension rottlog-service-type - (const %mumi-log-rotations)))) + mumi-shepherd-services))) (description "Run Mumi, a Web interface to the Debbugs bug-tracking server.") (default-value