[syslog-ng]Re: syslog-ng bug: newlines in messages

Scott McDermott mcdermot@questra.com
Tue, 29 Aug 2000 14:29:08 -0400


Mordechai T. Abzug on Sun 27/08 16:24 -0400:
> > I've just comitted a fix, it should be available in the next
> > version, or apply this patch:
> 
> > +       for (oldsrc = src, oldleft = left; oldleft; oldleft--, oldsrc++) {
> > +               if (*oldsrc < 32) *oldsrc = '.';
> > +       }
> 
> Thanks!  But since other syslogd implementations (IMLE) leave the
> other control characters alone and just replace newlines with spaces,
> wouldn't it be more correct to do exactly that, in the spirit of full
> compatibility?

This is not true.  The Linux (and I believe it is derived from BSD)
syslogd turns eg ASCII 13 to a "^M" string.  This screws up parsing
because some programs log continuation lines delimited with tabs, and
instead of incurring a split to new message, it just gets thrown in as
"^I" (two chars).  This contradicts Solaris' syslogd behavior, which is
to put them through unchanged.

Although I sort of agree that only printables 32-126 decimal should be
embedded in log files.  But that certainly doesn't make you i18n :)

Incidentally is there any sort of RFC for syslog messages? I've not been
able to locate any.  The only way I can figure it out is by reading
other syslogd implementations.  It seems they delimit messages by ASCII
NULs and prefix new messages with a "<xx>" number which when masked
gives facility and priority.

-- 
Questra Desktop and Network services (QDN) | (716) 381-0292 x525
web: http://qweb.web.roc.questra.com/srs/  | techserv@questra.com