python syslog.syslog()的java等价物
在python中,登录到syslog相当简单: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。抱歉,这不像
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();
}
}
}