首页 > 解决方案 > 使用 Process.runtime.exec 记录到 syslog

问题描述

我目前正在尝试将数据记录到 syslog,并且我正在使用 java 中的“Runtime.getRuntime().exec”语句来做到这一点。完整的声明是:

Runtime.getRuntime().exec("logger " +  data.toString());

现在这工作得很好,但它似乎太容易了,我想知道直接使用它是否有不好的影响。此外,如果有更好的方法将数据(log4j 库除外)记录到 syslog,我愿意接受。谢谢。

标签: javasyslog

解决方案


您正在为每个日志条目生成一个新进程,这非常昂贵。data.toString()另外,您可以通过传递到命令行来打开自己的注入攻击。做 Log4j 库可能做的事情(如果你想要灵感,它是开源的)并发送 UDP 消息。那很便宜,而且还便于携带。

如果您想从头开始编写网络代码,则该协议在rfc5424rfc5426中定义。


推荐阅读