java - 使用 Process.runtime.exec 记录到 syslog
问题描述
我目前正在尝试将数据记录到 syslog,并且我正在使用 java 中的“Runtime.getRuntime().exec”语句来做到这一点。完整的声明是:
Runtime.getRuntime().exec("logger " + data.toString());
现在这工作得很好,但它似乎太容易了,我想知道直接使用它是否有不好的影响。此外,如果有更好的方法将数据(log4j 库除外)记录到 syslog,我愿意接受。谢谢。
解决方案
您正在为每个日志条目生成一个新进程,这非常昂贵。data.toString()
另外,您可以通过传递到命令行来打开自己的注入攻击。做 Log4j 库可能做的事情(如果你想要灵感,它是开源的)并发送 UDP 消息。那很便宜,而且还便于携带。
如果您想从头开始编写网络代码,则该协议在rfc5424和rfc5426中定义。