我正在尝试编写一个简单的syslog客户端。
这很好用,并且在syslog服务器意外关闭时遇到异常。现在,我在调试时发现的唯一问题如下:
当我关闭系统日志服务器时,当我尝试发送消息时,它不会立即引发异常。它仅在系统日志服务器关闭时在下一次迭代后引发异常。 所以基本上我会释放一条消息。
请参见下面的示例/步骤:
1。)syslog服务器启动,我从for循环发送了第一条消息“ test1”,这是成功的。
2。)我关闭了系统日志服务器,现在我从for循环中发送第二条消息“ test2”(调试时)。什么都没有发生,也不例外!
3。)我发送了第三条消息“ test3”,现在引发了异常。
这怎么可能?为什么在系统日志服务器关闭时它在第一次迭代中没有引发异常?
class Syslog:
def __init__(self,host="localhost",port=514,facility=Facility.DAEMON):
self.host = host
self.port = port
self.facility = facility
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def connect(self):
try:
self.socket.connect((self.host, self.port))
except Exception as e:
print("failed setting up connection")
def send(self, message,level):
data = "<%d>%s" % (level + self.facility*8, message + "\n")
try:
self.socket.sendall(data.encode('utf-8'))
except Exception as e:
print("send failed")
#if __name__ == '__main__':
syslog1 = Syslog(host='HOSTIPADDRESS-NAME')
syslog1.connect()
messages = ["test1","test2","test3","test4","test5","test6","test7"]
for message in messages:
syslog1.send(message,Level.WARNING)