我正在编写一个将消息发布到rsyslog
TCP套接字的程序。我的程序应该能够发布任何消息。不幸的是,当我尝试发布某些类型的消息时 - 我收到了错误。
到目前为止,似乎在以一个或多个数字开头的消息上始终失败。这是一个Python程序,可以在我的本地工作站上可靠地产生这些错误:
import socket
s = socket.socket()
s.connect(('localhost', 514))
s.sendall(b'1\n')
以下是此程序在/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).
这里发生了什么?
答案 0 :(得分:1)
不是将原始套接字消息发送到syslog服务,而是尝试使用记录器,并将syslog handler添加到记录器。这不仅更容易设置,而且还允许您在扩展或修改应用程序时将日志输出发送给其他处理程序。