From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Nieuwenhuizen Subject: Re: [PATCH] gnu: rottlog: rotate messages daily. Date: Mon, 12 Sep 2016 23:35:34 +0200 Message-ID: <87eg4ou7h5.fsf@gnu.org> References: <87d1lfziew.fsf@gnu.org> <87k2eoox3p.fsf@gnu.org> <877fanyjoy.fsf@gnu.org> <87zinhve2w.fsf@gnu.org> <87zinelg1t.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57852) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bjYtV-0001fr-Un for guix-devel@gnu.org; Mon, 12 Sep 2016 17:36:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bjYtR-0000M9-JY for guix-devel@gnu.org; Mon, 12 Sep 2016 17:36:00 -0400 In-Reply-To: <87zinelg1t.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Sun, 11 Sep 2016 15:30:38 +0200") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Ludovic Court=C3=A8s writes: Hi! >> I made an attempt at a simple version of such a service. Its currently >> just copying rc and writing a daily/weekly, find a working example >> attached. > > Great! Comments below. Thanks...new patch attached! > It=E2=80=99s possible to make it so that users only need to write: > > (mcron-service) (rottlog-service) Nice; done! >> +(define-record-type* > It should also have a =E2=80=98rottlog=E2=80=99 field, to specify the rot= tlog package > being used. Ok. > I think it=E2=80=99d be best to let the user pass the files, and put them= in > /etc/rottlog by extending =E2=80=98etc-service-type=E2=80=99. Ah, yes. That's a good idea. > Thus, this would also extend mcron-service-type and etc-service-type. Okay. > >> +(define* (rottlog-service #:key (period 'daily) (initialize? #t)) >> + (service rottlog-service-type >> + (rottlog-configuration (period period) >> + (initialize? initialize?)))) > > The configuration probably contain something like an list of name/config > pairs as well as an =E2=80=98rc=E2=80=99 file, along these lines: > > (rottlog-configuration > (periods `(("weekly" . ,(file-append rottlog "/etc/weekly)) > ("daily" . ,(plain-file "daily" "=E2=80=A6")))) > (rc-file (file-append rottlog "/etc/rc"))) I think I have this too now. > Of course we should provide default config values that take care of > common files such as /var/log/{messages,Xorg.0.log} in a reasonable way. Hmm, yes. Input appreciated here! Currently I just use the rottlog defaults except for using daily instead of weekly rotations, only rotating /var/log/messages. On my box, that seems to be the only file that really needs rotation atm. Is that sane? > WDYT? Very nice, I think we're a lot closer now. Greetings, Jan --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-gnu-services-add-rottlog.patch Content-Transfer-Encoding: quoted-printable >From 8b5e5245b066f13c4cef6e5371cdcb84f2d84085 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Thu, 8 Sep 2016 01:20:43 +0200 Subject: [PATCH] gnu: services: add rottlog. * gnu/services/admin.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. --- gnu/local.mk | 1 + gnu/services/admin.scm | 94 ++++++++++++++++++++++++++++++++++++++++++++++= ++++ 2 files changed, 95 insertions(+) create mode 100644 gnu/services/admin.scm diff --git a/gnu/local.mk b/gnu/local.mk index 0da41f7..baa10f9 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -381,6 +381,7 @@ GNU_SYSTEM_MODULES =3D \ %D%/packages/zip.scm \ \ %D%/services.scm \ + %D%/services/admin.scm \ %D%/services/avahi.scm \ %D%/services/base.scm \ %D%/services/databases.scm \ diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm new file mode 100644 index 0000000..0e76e66 --- /dev/null +++ b/gnu/services/admin.scm @@ -0,0 +1,94 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright =C2=A9 2016 Jan Nieuwenhuizen +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of thye GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu services admin) + #:use-module (gnu packages admin) + #:use-module (gnu packages base) + #:use-module (gnu services) + #:use-module (gnu services mcron) + #:use-module (gnu services shepherd) + #:use-module (guix gexp) + #:use-module (guix records) + #:export (rottlog-configuration + rottlog-configuration? + rottlog-service + rottlog-service-type)) + +;;; Commentary: +;;; +;;; This module implements configuration of rottlog by writing +;;; /etc/rottlog/{rc,hourly|daily|weekly}. Example usage +;;;=20 +;;; (mcron-service) +;;; (rottlog-service) +;;; +;;; Code: + +(define-record-type* + rottlog-configuration make-rottlog-configuration + rottlog-configuration? + (rottlog rottlog-rottlog (default rottlog)) + (rc-file rottlog-rc-file) + (periods rottlog-periods) + (jobs rottlog-jobs)) + +(define (files-alist->directory files) + (define builder + #~(begin + (use-modules (ice-9 match)) + (mkdir #$output) + + (for-each (lambda (name file) + (symlink file (string-append #$output "/" name))) + '#$(map car files) + '#$(map cdr files)))) +=20=20 + (computed-file "rottlog" builder)) + +(define (rottlog-etc config) + `(("rottlog" ,(files-alist->directory + (cons `("rc" . ,(rottlog-rc-file config)) + (rottlog-periods config)))))) + +(define rottlog-service-type + (service-type (name 'rottlog) + (extensions + (list + (service-extension etc-service-type rottlog-etc) + (service-extension mcron-service-type rottlog-jobs))))) + +(define* (rottlog-service + #:key + (rottlog rottlog) + (rc-file (file-append rottlog "/etc/rc")) + (periods `(("daily" . ,(file-append rottlog "/etc/weekly")) + ;;("weekly" . ,(plain-file "weekly" "=E2=80=A6")) + ;;("weekly" . ,(file-append rottlog "/etc/weekly")) + ;; + )) + (jobs (list + #~(job '(next-hour '(5)) + (lambda () + (system (string-append #$rottlog "/sbin/rottlog"= ))))))) +=20=20 + (service rottlog-service-type + (rottlog-configuration (rottlog rottlog) + (rc-file rc-file) + (periods periods) + (jobs jobs)))) +;;; admin.scm ends here --=20 2.10.0 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.nl= =20=20 --=-=-=--