如何使用 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的主要内容,如果未能解决你的问题,请参考以下文章