On Thu, 30 Jan 2025 19:25:14 +0100, Kirill A. Korinsky <kir...@korins.ky> wrote: > > On Thu, 30 Jan 2025 19:02:45 +0100, > Martijn van Duren <opensm...@list.imperialat.at> wrote: > > > > Hello misc@, > > > > The diff below adds support for 4 different loglevels to smtpd filters: > > warn, info, debug, trace. These for levels are in line with the > > loglevels of smtpd itself and are emitted on said levels. > > > > To keep backwards compatibility and to keep things simpler for coders > > who don't care about loglevels, loglines without prefix will be logged > > at the warn (brief) level. > > > > I generally like it. > > But I feel that one pice is missed. > > If I make a filter with debug and trace logging, it can be quite noisy. I > not sure that it worth to send all debug and trace level logs to smtpd which > is ignored due to wrong log level. > > I suggest to extend handshake protocol and to add a configured log-level, > which allows to adjust log level in filter and skip too noisy logs. > > We also can make it dynamic, but here the catch: > 1. we may restart filters after changing a log level, > 2. or to send an update for handshake. > > I think that (1) is safer solution, but I may be wrong. >
and I see that I had missed your second email. Sorry for the noise. > > martijn@ > > > > diff bfd8327fa29c9064ad80b6cdb8235722bbf18877 > > acdf9909bf270b4d19c207f705c0e1bef68c8cc1 > > commit - bfd8327fa29c9064ad80b6cdb8235722bbf18877 > > commit + acdf9909bf270b4d19c207f705c0e1bef68c8cc1 > > blob - b9c5d55c15f9052bc726f1a09484f0e32f75e2f3 > > blob + cbd8657110f1cac373d7964c20b9fca57fc17ec1 > > --- usr.sbin/smtpd/lka_filter.c > > +++ usr.sbin/smtpd/lka_filter.c > > @@ -317,8 +317,26 @@ processor_errfd(struct io *io, int evt, void *arg) > > > > switch (evt) { > > case IO_DATAIN: > > - while ((line = io_getline(io, &len)) != NULL) > > - log_warnx("%s: %s", name, line); > > + while ((line = io_getline(io, &len)) != NULL) { > > + if (strncasecmp(line, "WARN|", > > + sizeof("WARN|") - 1) == 0) > > + log_warnx("%s: %s", name, > > + line + sizeof("WARN|") - 1); > > + else if (strncasecmp(line, "INFO|", > > + sizeof("INFO|") - 1) == 0) > > + log_info("%s: %s", name, > > + line + sizeof("INFO|") - 1); > > + else if (strncasecmp(line, "DEBUG|", > > + sizeof("DEBUG|") - 1) == 0) > > + log_debug("%s: %s", name, > > + line + sizeof("DEBUG|") - 1); > > + else if (strncasecmp(line, "TRACE|", > > + sizeof("TRACE|") - 1) == 0) > > + log_trace(TRACE_FILTERS, "%s: %s", name, > > + line + sizeof("TRACE|") - 1); > > + else > > + log_warnx("%s: %s", name, line); > > + } > > } > > } > > > > blob - 5a1bcbb39e2380f90adc754d4849b1ac7385c1fe > > blob + d5636b55abfd4bc86cd865851f4b9aa0cb9f2759 > > --- usr.sbin/smtpd/smtpd-filters.7 > > +++ usr.sbin/smtpd/smtpd-filters.7 > > @@ -74,6 +74,12 @@ and may be written in any language. > > must not use blocking I/O, > > they must support answering asynchronously to > > .Xr smtpd 8 . > > +.Pp > > +Loglines to > > +.Xr stderr 4 > > +can be prefixed with WARN|, INFO|, DEBUG|, or TRACE| to specify the level > > at > > +which they need to be logged. > > +Lines without a prefix will be logged as warning. > > .Sh REPORT AND FILTER > > The API relies on two streams, > > report and filter. > > > > > > -- > wbr, Kirill > -- wbr, Kirill