runit的svlogd期待什么样的服务?

runit手册指出,在configuration中可以使用一个选项来提交日志到:

ua.bcd [:port]告诉svlogd将所选日志消息的第一个len字符发送到IP地址abcd,端口号端口。 如果没有设置端口,则使用系统日志的默认端口(514)。 len可以通过-l选项设置,见下面。 如果svlogd无法发送udp数据包,则会将错误消息写入日志目录。 注意:通过udplogin是不可靠的,只能在私人networking中使用。

我知道rsyslogd正在这个端口上运行列表。 所以这可能是一个可能的select…
但还有其他吗?

这个问题有点含糊,但从它的声音,我想你是问你是否可以使用svlogd发送系统日志消息到除rsyslogd之外的另一个程序。 答案是, 任何提供系统日志服务的程序都足够了。 rsyslogd不仅仅是提供系统日志networking服务。

然而,runit打算“本地”处理日志的方式可能与你所想的相反。

这个想法是你有某种服务,并且服务通过stdout或stderr写入输出。 runsv程序将调出svlogd并在你的服务和svlogd之间build立一个pipe道; 所有你的服务所要做的就是发送数据到stdout / stderr,svlogd会直接写入磁盘,而且生活还是不错的。 由于pipe道是由runsv维护的,如果服务出现问题,输出仍然会被捕获并传递给svlogd理论上 ,由于服务崩溃,您不会丢失日志数据。

还有一个由同一个作者socklog编写的程序,作为一个svlogd的syslog前端。 由于有很多程序假定/dev/log可用,因此socklog提供了此接口,以便可以捕获系统日志数据 – 它充当替代系统日志服务。 这与你所build议的相反。

我不是说你不应该使用syslog,我只是说有多种方法可以做到这一点。 如果你真的想把你的输出从svlogd转回syslog,那么是的,任何旧的syslog服务都可以,但是如果你的安装允许的话,可能还是值得考虑的是“all native”和rsyslogd