使用 Process.runtime.exec 记录到 syslog
Posted
技术标签:
【中文标题】使用 Process.runtime.exec 记录到 syslog【英文标题】:Logging to syslog using Process.runtime.exec 【发布时间】:2019-04-22 06:06:39 【问题描述】:我目前正在尝试将数据记录到 syslog,并且我正在使用 java 中的“Runtime.getRuntime().exec”语句来执行此操作。完整的声明是:
Runtime.getRuntime().exec("logger " + data.toString());
现在这很好用,但似乎太容易了,我想知道直接使用它是否会产生不良影响。此外,如果有更好的方法将数据(log4j 库除外)记录到 syslog,我愿意接受。谢谢。
【问题讨论】:
【参考方案1】:您正在为每个日志条目生成一个新进程,这非常昂贵。另外,您可以通过将data.toString()
传递给命令行来打开自己的注入攻击。做 Log4j 库可能做的事情(如果你想要灵感,它是开源的)并发送 UDP 消息。既便宜又便于携带。
如果您想从头开始编写网络代码,该协议在rfc5424 和rfc5426 中定义。
【讨论】:
其实 log4j 也很好用。但是我被卡住了,因为每当我使用 log4j 登录时,日志中显示的主机名都是“localhost”,并且无法解决这个问题。有什么想法吗? ***.com/questions/7744840/… 非常感谢,它成功了。我需要在我的谷歌搜索上多做一点工作。需要使用正确的关键字哈哈。以上是关于使用 Process.runtime.exec 记录到 syslog的主要内容,如果未能解决你的问题,请参考以下文章
ArcGIS微课1000例0038:注记(Annotation)的使用方法