(define-module (glicid services logging) #:use-module (gnu packages logging) #:use-module (gnu services) #:use-module (gnu services shepherd) #:use-module (guix) #:use-module (guix records) #:use-module (ice-9 match) #: export ( rsyslog-configuration rsyslog-configuration? rsyslog-shepherd-service rsyslog-service-type )) (define-record-type* rsyslog-configuration make-rsyslog-configuration rsyslog-configuration? (rsyslog-pkg rsyslog-pkg (default rsyslog)) (config-file config-file (default (file-append rsyslog "/etc/rsyslog/rsyslog.conf"))) (pid-file pid-file (default "/var/run/rsyslog/rsyslog.pid")) (log-file log-file (default "/var/log/rsyslog.log"))) (define rsyslog-shepherd-service (match-lambda (($ rsyslog-pkg config-file pid-file log-file ) (list (shepherd-service (provision '(syslogd)) (documentation "Run rsyslog.") (requirement '(user-processes)) (respawn? #t) (start #~(make-forkexec-constructor (list #$(file-append rsyslog-pkg "/sbin/rsyslogd") "-n" "-f" #$config-file "-i" #$pid-file ) #:pid-file #$pid-file #:log-file #$log-file )) (stop #~(make-kill-destructor))))))) (define %rsyslog-activation #~(begin (mkdir-p "/var/run/rsyslog") (mkdir-p "/var/lib/rsyslog") #t )) (define rsyslog-service-type (service-type (name 'rsyslog) (extensions (list (service-extension shepherd-root-service-type rsyslog-shepherd-service) (service-extension activation-service-type (const %rsyslog-activation)))) (description "Run @uref{https://www.rsyslog.org, rsyslog} community developped LDAP software.")))