【发布时间】:2017-07-30 16:48:47
【问题描述】:
我正在编写一个程序,它可以转换已记录在文件中的标准系统日志消息,例如:
Mar 9 15:51:36 ldaptestserver slapd[392]: slap_global_control: unrecognized control: 1.3.6.1.4.1.42.2.27.8.5.1
到系统日志消息,包括PRI、header 等。
我可以通过存储在我的 kafka 测试集群中的 syslog 消息来做到这一点,看起来像
2017-03-09T15:22:00.642769+00:00 ldaptestserver slapd[392]: slap_global_control: unrecognized control: 1.3.6.1.4.1.42.2.27.8.5.1
通过添加优先级并启动到 syslog 端口的 tcp 连接,并将消息作为 []byte 切片写入套接字。从 kafka 订阅后,将其发送到 syslog 之前的最后一条消息看起来像
<13>2017-03-09T15:22:00.642769+00:00 ldaptestserver slapd[392]: slap_global_control: unrecognized control: 1.3.6.1.4.1.42.2.27.8.5.1
只有<13> 被添加到整个日志中。
现在,我尝试打开并读取 /var/log/syslog,而不是 kafka,并构造了与上面类似的消息,
<13>2017-03-08T12:29:02.231335+00:00 ldaptestserver slapd[392]: slap_global_control: unrecognized control: 1.3.6.1.4.1.42.2.27.8.5.1 // Original one from kafka that worked
<13>2017-00-01T16:18:04.000000+00:00 ldaptestserver slapd[392]: slap_global_control: unrecognized control: 1.3.6.1.4.1.42.2.27.8.5.1 // The message that is hand crafted.
但是当我将[]byte 消息写入系统日志连接套接字时,它会产生一个加扰的输出。
(注意IP是本地主机IP,而不是消息中的主机名。在使用类似kafka消息的情况下,它与原始主机名完美记录。)
有人可以帮助我了解它在哪里搞砸了,我应该怎么做才能让它不被打乱?
我是用 golang 来编程的。
-- 斯科特。
【问题讨论】:
标签: logging go protocols syslog rsyslog