[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Wed, 12 May 2004 12:13:45 -0500
I've noticed that a significant chunk of the syslog output generated by
cfagent goes to LOG_USER, not what I designate with SyslogFacility. I'm not
sure, but I suspect that this results from calls to syslog(3) being made
before CfOpenLog() is being called.
CfOpenLog calls openlog(3), which causes future syslog calls to default to a
specified facility (whatever is designated by SyslogFacility). However,
syslog() can be called before openlog() and works just fine; it will simply
default to LOG_USER for want of a better idea.
I tested this by adding a syslog() line at the end of CfOpenLog, and observed
that all cfengine-related stuff that was syslogged went to LOG_USER until
this line appeared, at which point everything went to LOG_LOCAL1. The stuff
that went to LOG_USER included all the chmodding, chowning, and chgrping of
files and directories (which is sometimes quite a lot of noise).
So, I guess our options are to either have CfOpenLog be called earlier in the
run (before files: and directories: operations happen, at least) or to have
calls to CfLog be buffered somewhere until CfOpenLog is called, then dump the
buffer all at once. The second option is kind of a hack, but the first one
is outside of my programming comfort-zone (I find the scheduling stuff a
little hairy). Anybody have any ideas?
In the meantime, I am hacking around it by having the syslog() calls in log.c
explicitly ask for LOG_LOCAL1 (ugly!).
|[Prev in Thread]
||[Next in Thread]|
- Syslog facility,
Chip Seraphine <=