如何使用 syslog.h 将消息发送到远程 syslog

Posted

技术标签:

【中文标题】如何使用 syslog.h 将消息发送到远程 syslog【英文标题】:How to send a message to a remote syslog by using syslog.h 【发布时间】:2013-06-13 15:52:43 【问题描述】:

以下代码将消息发送到文件 /var/log/syslog。 我有一个正在侦听端口 514(rsyslog)的远程服务器。 有什么办法可以更改此代码,使其向远程服务器发送消息?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <syslog.h>

int main(int argc, char *argv[])


  openlog ("Engine", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
  syslog(LOG_NOTICE,"***Example***");


【问题讨论】:

【参考方案1】:

据我所知,使用您所描述的 openlog 和 syslog 将登录到 syslog.conf 中配置的服务器,因此您无法以您想要的方式指定服务器。您可以在 syslog.conf 中设置远程服务器,这应该可以工作。

如果您不希望这样做,您要么需要使用支持 syslog 作为接收器的库,要么需要实现自己的库 - 这并不难。

【讨论】:

有好几个,但大多数都不仅仅包含 syslog 部分,poco 项目就是其中之一,您可以使用 boost 库和 boost::asio::ip::udp 快速编写自己的::socket,其他更多的日志库是 log4cpp,pantheios,我也认为 google-glog 支持 syslog。

以上是关于如何使用 syslog.h 将消息发送到远程 syslog的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 rsyslog 仅将特定文件发送到远程服务器

使用 pem 证书向远程代理发送消息

syslogd 在 5 秒内将一条远程消息写入日志文件

dbus-发送到远程机器

C Syslog API - 如何覆盖 _PATH_LOG

如何避免activeMQ数据丢失