python syslog.syslog()的java等价物

python syslog.syslog()的java等价物,java,python,syslog,Java,Python,Syslog,在python中,登录到syslog相当简单: syslog.openlog("ident") syslog.syslog(0, "spilled beer on server") syslog.closelog() Java中是否有一种相当简单的方法?在谷歌搜索了相当一段时间后,我一直无法找到一个不需要重新配置rsyslogd或syslogd的简单易懂的方法。如果没有等效的方法,那么最简单的登录syslog的方法是什么?我能想到的最接近的方法是使用和配置,以便它写入syslog。抱歉,这不像

在python中,登录到syslog相当简单:

syslog.openlog("ident")
syslog.syslog(0, "spilled beer on server")
syslog.closelog()

Java中是否有一种相当简单的方法?在谷歌搜索了相当一段时间后,我一直无法找到一个不需要重新配置rsyslogd或syslogd的简单易懂的方法。如果没有等效的方法,那么最简单的登录syslog的方法是什么?

我能想到的最接近的方法是使用和配置,以便它写入syslog。抱歉,这不像Python中那么简单

不使用udp直接访问日志的一种方法是使用。我不一定说它很简单,但至少它不需要重新配置syslog。

这是我能想到的最简单的客户端代码:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

// java Syslog localhost "Hello world"
public class Syslog {
  public static void main(String[] args) throws Exception {
    InetAddress address = InetAddress.getByName(args[0]);
    byte[] bytes = args[1].getBytes();
    DatagramSocket socket = new DatagramSocket();
    try {
      DatagramPacket data = new DatagramPacket(bytes, bytes.length, address, 514);
      socket.send(data);
    } finally {
      socket.close();
    }
  }
}
和服务器(syslogd):


是否可以在不修改rsyslog配置的情况下执行此操作?例如,需要配置支持upd的syslog以使用log4j。否,链接文章强调了这一点:“有一个要求能够将log4j与sys日志一起使用。您需要启用udp”。不过,存在一个替代的TCP附加器。但它是非官方的,而且有问题,“使用它要自担风险”。请看这篇文章。似乎是一个断开的链接:-(
import java.net.DatagramPacket;
import java.net.DatagramSocket;

// java SyslogD
public class SyslogD {
  public static void main(String[] args) throws Exception {
    DatagramSocket socket = new DatagramSocket(514);
    try {
      for(;;) {
        DatagramPacket data = new DatagramPacket(new byte[4096], 4096);
        socket.receive(data);
        System.out.println("[" + data.getAddress().toString() + "] " + new String(data.getData(),0,data.getLength()));
      }
    } finally {
      socket.close();
    }
  }
}