Logging 构造系统日志消息时的加扰输出

Logging 构造系统日志消息时的加扰输出,logging,go,protocols,syslog,rsyslog,Logging,Go,Protocols,Syslog,Rsyslog,我正在编写一个程序,可以转换文件中已经记录的标准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 到系统日志消息,包括PRI,标题等 我可以通过存储在kafka测试集群中的一条syslog消息来实现这一点,它看起来像 2017-03-09T15:22:00.642769+00:00 ldaptes

我正在编写一个程序,可以转换文件中已经记录的标准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
到系统日志消息,包括
PRI
标题

我可以通过存储在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连接,并将消息作为
[]字节写入套接字。从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
2017-03-09T15:22:00.642769+00:00 ldaptestserver slapd[392]:slap_全局_控件:未识别控件:1.3.6.1.4.1.42.2.27.8.5.1
其中,只有
在整个日志前面

现在,我尝试打开并读取/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.
2017-03-08T12:29:02.231335+00:00 ldaptestserver slapd[392]:slap_全局_控件:未识别控件:1.3.6.1.4.1.42.2.27.8.5.1//卡夫卡提供的有效原始控件
2017-00-01T16:18:04.000000+00:00 ldaptestserver slapd[392]:slap_全局_控件:无法识别的控件:1.3.6.1.4.1.42.2.27.8.5.1//手工制作的消息。
但是,当我将
[]字节
消息写入syslog连接套接字时,它会产生一个加扰输出

(请注意,IP是本地主机IP,而不是消息中的主机名。在使用类似kafka消息的情况下,它与原始主机名完全一致。)

有人能帮我弄清楚哪里搞砸了,我该怎么做才能不被打乱呢

我用golang来编程


--Scott。

不要将从kafka提取的工作日志打印为
string()
,而是尝试按原样转储
[]字节
片段本身。这将为您提供一组数字,您可以将这些数字转换为相应的
ascii
字符,您可以查看是否有任何分隔符,如
回车符
换行符
,用于分隔消息头中每个节的结尾和行的结尾。如果在打印时将其强制转换为
string()
,则此选项不可见。syslog服务器的解析器很可能期望一个行终止符来区分它找不到的消息的头部分或结尾,并继续追加后续消息,直到解析器的缓冲区用完为止