summary refs log tree commit diff
path: root/gnu/services
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-06-06 22:35:12 +0200
committerLudovic Courtès <ludo@gnu.org>2022-06-06 22:43:31 +0200
commit264ca9452fae827d6621b28b8972f4b1d68401a1 (patch)
treec49f5eeb13d39024c7afc74b357c79ac9fa40689 /gnu/services
parent635d49f97ee233bbb2673f97d7556c3c91b55889 (diff)
downloadguix-264ca9452fae827d6621b28b8972f4b1d68401a1.tar.gz
services: syslogd: Do not fsync at each line.
Fixes <https://issues.guix.gnu.org/55707>.

Previously Inetutils' syslogd would call 'fsync' after each line written
to a file.  This would significantly increase boot times on machines
with slow-ish spinning HDDs, where each 'fsync' call would take between
0.1s and 0.4s (and we'd do two of them for each line, one for
/var/log/messages and one for /var/log/debug).

* gnu/services/base.scm (%default-syslog.conf): Add a '-' before each
file name, except /var/log/secure.  Change what goes to /var/log/debug.
Diffstat (limited to 'gnu/services')
-rw-r--r--gnu/services/base.scm13
1 files changed, 7 insertions, 6 deletions
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index f27365bbe6..6865d03f25 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1397,23 +1397,24 @@ responsible for logging system messages.")))
      # level notice or higher and anything of level err or
      # higher to the console.
      # Don't log private authentication messages!
-     *.alert;auth.notice;authpriv.none       /dev/console
+     *.alert;auth.notice;authpriv.none      -/dev/console
 
      # Log anything (except mail) of level info or higher.
      # Don't log private authentication messages!
-     *.info;mail.none;authpriv.none          /var/log/messages
+     *.info;mail.none;authpriv.none         -/var/log/messages
 
-     # Like /var/log/messages, but also including \"debug\"-level logs.
-     *.debug;mail.none;authpriv.none         /var/log/debug
+     # Log \"debug\"-level entries and nothing else.
+     *.=debug                               -/var/log/debug
 
      # Same, in a different place.
-     *.info;mail.none;authpriv.none          /dev/tty12
+     *.info;mail.none;authpriv.none         -/dev/tty12
 
      # The authpriv file has restricted access.
+     # 'fsync' the file after each line (hence the lack of a leading dash).
      authpriv.*                              /var/log/secure
 
      # Log all the mail messages in one place.
-     mail.*                                  /var/log/maillog
+     mail.*                                 -/var/log/maillog
 "))
 
 (define* (syslog-service #:optional (config (syslog-configuration)))