Linux - 系统日志客户端

标签 linux client udp syslog rsyslog

为了开发一个跨平台的 syslog 客户端,我试图在不使用 syslog 系统调用的情况下进行。我正在用 C++ 开发此客户端,目前正在 Linux 中进行测试。我正在替换的旧 syslog 客户端与 syslog 系统调用完美配合。 对于如何,它根本不起作用。跟踪不在 /var/log/user.log 中,它应该在其他任何地方(greped)。但是当我使用 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/

相关文章:

c - 为什么 `libusb_bulk_transfer'返回0?

php - 显示 tmp 目录中的图像

linux - Centos 7 : Auto restart application if it stopped

java - 随机数生成始终返回相同的值

go - 本地主机 UDP 客户端未从 UDP 代理接收数据包

linux - 将数据从 Linux 命令行复制/移动到本地 Windows

javascript - 客户端计时是否可能与服务器端计时一致?

java - REST 客户端抛出 sun.security.provider.certpath.SunCertPathBuilderException

java - 我无法使用 JNA 访问 Java 代码中的 Visual Basic DLL 方法

c++ - UDP 打洞 (c++/winsock)