1

我有一个在 514 端口工作的系统日志服务器(接收日志事件并存储在文件中)。syslog服务器运行良好,因为用Router测试过,用Syslog Server的IP和端口配置路由器,Router Sent Log to Syslog Server。

但是,现在我想制作一个替换路由器的应用程序(将事件/日志发送到服务器时)。

我有这个:

Logger mylogger;
mylogger = Logger.getLogger(this.getClass().getName());
SocketHandler myhandler = null;
try {
  myhandler = new SocketHandler("localhost", 514); //With Port 80 Work!
  myhandler.setLevel(Level.FINEST);
  mylogger.setLevel(Level.CONFIG);
  mylogger.addHandler (myhandler);
  mylogger.log(Level.SEVERE, "SEVERE LOG...");
  mylogger.log(Level.WARNING, "WARNING LOG...");
  mylogger.log(Level.INFO, "INFO LOG...");
  mylogger.log(Level.CONFIG, "CONFIG LOG...");
  mylogger.log(Level.FINE, "FINE LOG...");
  mylogger.log(Level.FINER, "FINER LOG...");
  mylogger.log(Level.FINEST, "FINEST LOG...");
  myhandler.close();
}
catch (IllegalArgumentException e) { System.out.println("IllegalArgumentException:"+e.toString()); }
catch (IOException e) { System.out.println("IOException:"+e.toString()); }
catch (SecurityException  e) { System.out.println("SecurityException0:"+e.toString()); }

我有这个消息:

IOException:java.net.ConnectException: Connection refused: connect

问题在于 514 端口中的套接字处理程序。

我需要用我的 Syslog 服务器的真实 IP 和端口替换“localhost”我该怎么办?

请帮我。

此致,

伯纳尔

4

1 回答 1

1

问题很糟糕。

如果使用 UDP,则必须使用 UDP 而不是 TCP。

要测试您的 UDP Syslog,您必须使用以下内容:

DatagramSocket dgSocket;
DatagramPacket dgPacket;
byte[] buf;
buf = "<67>Test Message".getBytes();
try {
  InetAddress addr; 
  dgSocket = new DatagramSocket();

  byte[] ipAddr = new byte[] { (byte)192, (byte)168, (byte)1, (byte)8 };//IP of Server Log
  addr = InetAddress.getByAddress(ipAddr);
  //instead of bytes using strings
  String sRemIP = "192.168.1.8"; //Ip of Syslog Server
  addr = InetAddress.getByName(sRemIP);

  int iPort = 514;//Number of Port where listening the Syslog Server
  dgPacket = new DatagramPacket(buf, buf.length, addr, iPort);
  dgSocket.send(dgPacket);
  System.out.println("Sending to IP:"+sRemIP+"  Port:"+sPort+"  The Message:"+new String(buf, "UTF8"));
}
catch (SocketException e) { System.out.println("SocketException:" + e.getMessage());}
catch (SecurityException e) { System.out.println("SecurityException:" + e.getMessage());}
catch (UnknownHostException e) { System.out.println("UnknownHostException:" + e.getMessage());}
catch (IOException e) { System.out.println("IOException:" + e.getMessage());}
于 2013-06-05T20:13:58.590 回答