使用 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)的使用方法

Atom编辑器折腾记

ArcGis 创建Annotation注记要素类添加注记要素 并加载到Activeview AO C#

记AccessibilityService使用(转)

Kendo UI使用小小记

Tapku 日历上标记的日期错误