0

我想使用 Java 代码设置本地 Syslog 服务器。

我有 MAC 机器和另一台虚拟 Linux 机器。

我在下面找到了 java 代码,并在我的 MAC 机器上运行了它,并且 Syslog 服务器已正确建立。

我从我的 MAC 发送了下面的 linux 命令,它起作用了,系统日志服务器收到了消息。

现在我想从不在我的 MAC 网络中的另一个 linux 发送相同的 syslog 消息并由我的 syslog 服务器接收。

我怎样才能做到这一点?我应该对 Java 代码进行一些更改吗?也许与 config.setHost() 方法有关的东西?我应该以某种方式将路由添加到我的 MAC 或其他 linux 吗?

linux命令:

nc 10.10.1.1 9899 <<< "syslog message."

Java 代码:

import java.net.InetAddress;
import java.net.UnknownHostException;

import com.mprv.sysmoduleinfra.mgmt.syslog.TCPSyslogServerConfig;
import com.mprv.sysmoduleinfra.mgmt.syslog.UDPSyslogServerConfig;
import org.productivity.java.syslog4j.SyslogRuntimeException;
import org.productivity.java.syslog4j.server.SyslogServer;
import org.productivity.java.syslog4j.server.SyslogServerConfigIF;

/**
 * Syslog server.
 *
 * @author Josef Cacek
 */
public class Server {

    public static final int SYSLOG_PORT = 9899;

    public static void main(String[] args) throws SyslogRuntimeException, UnknownHostException {

        // Details for the properties -
        // http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html
        System.setProperty("jsse.enableSNIExtension", "false");
        // just in case...
        System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
        System.setProperty("sun.security.ssl.allowLegacyHelloMessages", "true");

        // clear created server instances (TCP/UDP)
        SyslogServer.shutdown();

        String syslogProtocol = "tcp";
        System.out.println("Simple syslog server (RFC-5424)");
        System.out.println("Usage:");
        System.out.println("  java -jar simple-syslog-server.jar [protocol]");
        System.out.println();
        System.out.println("Possible protocols: udp, tcp, tls");
        System.out.println();


        SyslogServerConfigIF config = getSyslogConfig(syslogProtocol);
        if (config == null) {
            System.err.println("Unsupported Syslog protocol: " + syslogProtocol);
            System.exit(1);
        }

        config.setUseStructuredData(true);
//      config.setHost(InetAddress.getByName(null).getHostAddress());
        config.setHost("0.0.0.0");
        config.setPort(SYSLOG_PORT);

        System.out.println("Starting Simple Syslog Server");
        System.out.println("Protocol:     " + syslogProtocol);
        System.out.println("Bind address: " + config.getHost());
        System.out.println("Port:         " + config.getPort());

        // start syslog server
        SyslogServer.createThreadedInstance(syslogProtocol, config);
    }

    private static SyslogServerConfigIF getSyslogConfig(String syslogProtocol) {
        SyslogServerConfigIF config = null;
        if ("udp".equals(syslogProtocol)) {
            config = new UDPSyslogServerConfig();
        } else if ("tcp".equals(syslogProtocol)) {
            config = new TCPSyslogServerConfig();
        }
        return config;
    }

}
4

0 回答 0