我正在编写一个将消息发布给rsyslog
TCP套接字的程序。我的程序应该能够发布任何消息。不幸的是,当我尝试发布某些类型的消息时 - 我会收到错误。
到目前为止,它似乎在以一个或多个数字开头的消息上持续失败。这是一个Python程序,可在我的本地工作站上可靠地产生这些错误:
import socket
s = socket.socket()
s.connect(('localhost', 514))
s.sendall(b'1n')
这是该程序出现在/var/log/messages
中的原因,而是消息" 1":
Sep 1 16:08:52 dunpeal rsyslogd: Framing Error in received TCP message: delimiter is not SP but has ASCII value 10.
Sep 1 16:08:52 dunpeal rsyslogd: Incomplete frame at end of stream in session 0x7fe6e801cc80 - ignoring extra data (a message may be lost).
这里发生了什么?
,而不是将原始套接字消息发送到Syslog服务,而是尝试使用记录器,然后将Syslog处理程序添加到您的记录器中。这不仅更容易设置,而且还可以使您在扩展或修改应用程序时将日志输出发送到其他处理程序。