Tomas Volf <~@wolfsden.cz> writes:

> 1. Per-log file settings.  Some files I want to never rotate (the data
>    has sentimental value).  Some files I want to rotate, but keep *all*
>    previous versions (if I would be using Guix at work, this is required
>    for auditing reasons).

OK.

> 2. Option to limit number of rotated versions being kept.  Currently,
>    any single "log stream" can occupy unlimited disk space even with
>    frequent rotations.  To prevent that, I would like to express expiry
>    in terms of "keep current and 4 rotated versions", but that is not
>    possible as far as I can tell.

Expiry is expressed as a duration.  I’m skeptical about expressing it as
a number of files.

One thing we could do is make #:expiry a procedure taking a file name
and returning its expiry.

> 3. Run-time discovery of log files to rotate.  I have no idea how to use
>    shepherd for rotating samba's log files for example, their names are
>    (in my configuration) dynamic based on the host name of the machine
>    that connects to the samba share.  Their only shared trait is that
>    they are under /var/log/samba.d and end in .log.

Yeah.  The “external log file” mechanism could be extended to support
glob patterns or regexps.

> What is your opinion on turning the log rotation into a plug-able
> mechanism?  I did not look too closely yet how this part of code works,
> but for example being able to set global parameter to a callback to do
> the log rotation could allow lot of flexibility while keeping it out of
> Shepherd itself.

We could expose more extension points.

(It would also be possible to maintain a separate log rotation tool
outside the Shepherd: there’s a well-defined protocol to query the log
files of services and to perform atomic rotation.)

Thanks for your feedback!

Ludo’.

Reply via email to