Return values of the syslog(3) family

Dan Nelson dnelson at allantgroup.com
Tue Apr 8 15:34:49 PDT 2003


In the last episode (Apr 08), Christopher Nehren said:
> ... or rather, lack thereof. I'm not quite sure whom to ask about
> this, so please redirect me if this isn't the appropriate forum.
> 
> I've looked at the prototypes of various BSD and Linux systems'
> syslog(3) calls, and they all have 'void' as the return type. Now,
> logically, since a log file is being written, wouldn't it be nice to
> know whether that call executed successfully? Yes, I've already
> thought of the "If you can't write to syslog, then you have larger
> problems than this" ... but how would one -know- they have these
> problems? I admit that I'm probably missing something about the
> Nature of Programming; but at least to this newbie, it seems like it
> defeats part of the point of calling the functions in the first
> place. TIA for any information about this.

Syslogging is done by writing to the /var/run/log pipe.  If the write
succeeds, the app continues.  That just means that the data is in the
pipe, though.  Syslogd can take its time emptying the pipe (within
reasonable limits, or the other end will block), so it many not be able
to return an error until long after the syslog() call has returned at
the client's side.

Syslogd can also forward to a remote server via UDP packets, so even
though a log entry may eventually get written, there's no guarantee
that it's even on the same machine or that the packets made it.

-- 
	Dan Nelson
	dnelson at allantgroup.com


More information about the freebsd-questions mailing list