
On Aug 23, 2009, at 11:33 , Magnus Therning wrote:
Brandon S. Allbery KF8NH wrote:
On Aug 23, 2009, at 09:41 , Magnus Therning wrote:
I'm having some problem with logging to syslog using System.Log.Logger and friends. I have the following:
:m +System.Log.Logger :m +System.Log.Handler.Syslog sl <- openlog "foo" [PID] USER DEBUG updateGlobalLogger rootLoggerName (addHandler sl) warningM "bar" "test" *** Exception: sendTo: protocol error (Protocol wrong type for socket)
What could be the cause for this? I've tried hsyslog and it reports to my instance of syslog without problems. Looks like hslogger assumes /dev/log is always a datagram socket; hsyslog uses the system openlog(), which correctly recognizes that syslog-ng uses a stream socket. (Think UDP and TCP, respectively, except that there's no IP involved with local sockets.)
Oh, though logging to a dgram socket doesn't seem to work either.
I added the following line to /etc/syslog-ng.conf:
unix-dgram("/dev/dlog");
Restarted it and checked that the socket was there. Then I ran the following:
:m +System.Log.Logger :m +System.Log.Handler.Syslog sl <- openlog_local "/dev/dlog" "foo" [PID] USER DEBUG updateGlobalLogger rootLoggerName (addHandler sl) warningM "bar" "test" *** Exception: sendTo: protocol error (Protocol wrong type for socket)
Hm. hslogger uses a hardcoded 0 instead of PF_UNSPEC (not that Network.BSD exports PF_*, and it too hardcodes defaultProtocol as 0) but a spot check of system under my control suggests it should work most places. -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH