使用 rsyslog 高效记录标准输入

Posted

技术标签:

【中文标题】使用 rsyslog 高效记录标准输入【英文标题】:Efficient logging of stdin with rsyslog 【发布时间】:2010-11-15 07:28:28 【问题描述】:

我们的环境:CentOS 5,附带 Apache 2.2 和 rsyslog 2.0.6

为了发送 Apache 2.2 错误日志,我们按照此处的说明进行操作:http://wiki.rsyslog.com/index.php/Working_Apache_and_Rsyslog_configuration

它可以工作,但包含的 perl 脚本效率非常低 - 它占用了大量系统资源,通过查看 Sys::Syslog::syslog 子例程,我可以想象为什么 - 它会进行大量参数解析和移动在它实际发送消息之前。

是否有一些高效的 C/C++ 程序来替换这个脚本?它似乎是一个 5 班轮,但我宁愿不重新发明***。

也欢迎其他有效地将 apache ERROR 日志发送到 syslog 的解决方案。

谢谢。

【问题讨论】:

该脚本似乎也违反了规则:search.cpan.org/perldoc/Sys::Syslog#THE_RULES_OF_SYS::SYSLOG 【参考方案1】:

实际上这是相当多余的——“logger”命令行实用程序将读取标准输入并将每一行发送到 syslog,如果它没有在命令行上传递消息。

无论如何都欢迎你....:)

【讨论】:

【参考方案2】:

我编写了一个 C 程序,它的功能与上面链接中的 perl 脚本相同。 它似乎需要更少的资源。 该程序的源代码已上传到我的问题中的链接。

【讨论】:

以上是关于使用 rsyslog 高效记录标准输入的主要内容,如果未能解决你的问题,请参考以下文章

标准输入流和输出流分别是啥,高效字符流的方法

logstash收集rsyslog日志

从 python 脚本登录到 rsyslog 工具

MS Access,根据多个标准表单输入选择记录

标准文件IO详解---标准输入流标准输出流和标准错误流

第六章 Shell标准输入输出和错误