unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: David Pirotte <david@altosw.be>
Cc: guile-devel@gnu.org
Subject: Re: [Guile-Lib PATCH] logger: Add flush-after-emit? property to <log-handler>.
Date: Sat, 02 Mar 2024 22:26:29 -0500	[thread overview]
Message-ID: <87r0gshu6y.fsf@gmail.com> (raw)
In-Reply-To: <20240302202542.353ca019@tintin> (David Pirotte's message of "Sat, 2 Mar 2024 20:28:42 -0300")

Hi David,

David Pirotte <david@altosw.be> writes:

> Hello Maxim,
> guile-devel followers,
>
>> * src/logging/logger.scm (<log-handler>): Add new
>>   optional flush-after-each-emit? slot, initialized to #t.
>> ...
>
> Maxim and i have been talking about both the v4 1-7 series of patches
> that Maxim have been working on - now pushed to the devel branch if
> someone wants to look at them ... as well as about this little
> enhancement i wanted ...
>
> to avoid 'repeating the all chat' here, those interested may read our
> last words about this here:
>
> 	https://logs.guix.gnu.org/guile/2024-03-02.log#043834
>
> and my answers slightly below:
>
> 	https://logs.guix.gnu.org/guile/2024-03-02.log#235822
>
> So, to make it short, i am asking Maxim to write this patch so it uses
> buffering-mode as the new slot name, kw .. and accept either 'emit or
> 'line to cover our current need, to be extended with other mode if we
> wish or need to later ...

My only concern about doing this, rephrasing what I wrote on the chat,
is that it'd be hard to validate the input value, as that validation
would need to be specialized to handlers, e.g. for some class we'd want
to disallow 'line as it wouldn't apply.

That's why I suggested keeping the flush on emit switch as an on/off
boolean, which can live in the base class of all <log-handler>, and
perhaps subclass <log-handler> into <stream-handler> which would accept
a #:buffering-mode keyword whose accepted values would mirror what
setvbuf allows (line, block or none).  I think that'd simplify things at
the implementation level and avoid user error or surprises.

Our current loggers could be derived from the new <stream-handler>
class, while something like a <syslog-handler> would inherit directly
from <log-handler>, avoiding to handle users providing 'line or 'block
to #:buffering-mode, which would need to throw a user error.

Does that explain my point better (does it make sense?)  If so, we can
keep the patch here as-is, and the work to add a new <stream-handler>
with a #:buffering-mode keyword would become future work.

-- 
Thanks,
Maxim



  reply	other threads:[~2024-03-03  3:26 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-02  4:15 [Guile-Lib PATCH] logger: Add flush-after-emit? property to <log-handler> Maxim Cournoyer
2024-03-02 23:28 ` David Pirotte
2024-03-03  3:26   ` Maxim Cournoyer [this message]
2024-03-04  6:19     ` David Pirotte
2024-03-05 17:03       ` Maxim Cournoyer
2024-03-10  1:46         ` David Pirotte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r0gshu6y.fsf@gmail.com \
    --to=maxim.cournoyer@gmail.com \
    --cc=david@altosw.be \
    --cc=guile-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).