guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

06/12: services: Switch from mcron + Rottlog to Shepherd’s log rotation.


From: guix-commits
Subject: 06/12: services: Switch from mcron + Rottlog to Shepherd’s log rotation.
Date: Thu, 16 Jan 2025 16:41:27 -0500 (EST)

civodul pushed a commit to branch master
in repository guix.

commit 6942161b44344a20435824c4816404a03da158f6
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Wed Dec 11 23:32:45 2024 +0100

    services: Switch from mcron + Rottlog to Shepherd’s log rotation.
    
    * 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 3a6944ccfe..16a9e5a333 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 735ba3f7be..f3331ae835 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 5d2cd56a17..6515d53dbd 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 <mpd-configuration>
-    (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 <mpd-configuration>
     (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 <mympd-configuration>
-    (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 d67c16a720..5967457002 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 <ludo@gnu.org>
+;;; Copyright © 2013-2025 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015, 2016, 2020 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
@@ -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 2165059fd2..08a146f980 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 75e99f20b7..6b25cd420f 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 9955a11e64..e683da6bac 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 48a86b3694..af28bd0626 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 2d0aba94a1..f5de5997ac 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]