我有一个C程序,在调用openlog指定程序名后,当前正在通过syslog记录事件。
我将程序记录到syslog的程序只有三行:
openlog(program_name, 0, facility);
syslog(log_level|facility,"%s\n",message);
closelog()
但是,在我的程序中,我应该将syslog事件发送到远程计算机而不是本地记录,就像syslog函数通常那样。我想做的是可选地向包含上述行的函数提供一些其他信息,例如主机(以及可选的端口),以及是否使用udp或tcp,如果存在此类信息,通过rsyslog协议将syslog事件发送到另一台机器。
我明确做的 NOT 想要做的是必须更改syslog守护程序的任何配置文件。我只是希望在程序控制下,能够将相同的消息发送到另一台机器的系统日志,否则这些消息将使用以上三行在本地显示。
我能够确认我能够在程序控制下完成此操作的唯一方法是手动构建符合RFC 5424的消息,并通过套接字连接手动发送。我是否必须编写代码来自己从头开始做所有这些,或者是否有一些现有的设施(开源)可以满足我的需求?