我是一款可以将已记录在文件中的标准syslog消息转换的程序,例如:
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
将syslog消息转换为包括,
我能够从我的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
消息写入syslog连接套接字时,它会产生混乱的输出。
(请注意,IP地址是本地主机IP,而不是消息中的主机名。在使用类似kafka消息的情况下,它记录了原始主机名的完美日志。)有人能帮助我理解出了什么问题,并告诉我该怎么做才能避免这种混乱吗?
我是使用golang编写的。
-- Scott.