为了开发一个跨平台的 syslog 客户端,我试图在不使用 syslog 系统调用的情况下进行。我正在用 C++ 开发此客户端,目前正在 Linux
中进行测试。我正在替换的旧 syslog 客户端与 syslog 系统调用完美配合。
对于如何,它根本不起作用。跟踪不在 /var/log/user.log
中,它应该在其他任何地方(grep
ed)。但是当我使用 netcat
监听正确的端口时,我确实收到了它。端口 514
不应该已经被使用了吗?
跟踪应该在 UDP/514
上发送。我尝试坚持 RFC 3164,但显然还是有问题。
如果有人能给我提示以解决此问题,我将不胜感激。
Trace: severity: 2 (Critical); facility: 23 (Local Use 7) ==> priority: 186
sh$> sudo nc -ul localhost -p 514
<186>Oct 18 10:36:03 hostname test_trace: | 10:36:03.242995 | CRIT | xxx-MAIN[5473-000] | 00000 | 0008 : main : user_msg
谢谢!
我想我在自己的问题中发现了问题:Rsyslog(我的系统日志服务器)没有正确监听 UDP/514。
/etc/rsyslog.conf
$ModLoad imudp
$UDPServerAddress 0.0.0.0
$UDPServerRun 514
如果有人知道为什么它仍然不在 UDP/514 上监听,我将非常感谢,因为我真的不明白为什么。
再次感谢。
最佳答案
syslog() 调用写入/dev/log,系统记录器读取此 unix 域套接字以获取消息。 UDP/514 用于网络传输。 所以不清楚你想要什么。
关于Linux - 系统日志客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7804597/