1

Python では、syslog へのログ記録はかなり簡単です。

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

Javaで同等に簡単な方法はありますか? かなりのグーグル検索を行った後、rsyslogd または syslogd の再構成を必要としない、理解しやすい方法を見つけることができませんでした。同等のものがない場合、syslog にログを記録する最も簡単な方法は何ですか?

4

3 に答える 3

1

私が考えることができる最も近いのは、Log4Jを使用し、 SyslogAppenderを構成してsyslogに書き込むことです。申し訳ありませんが、それは Python ほど簡単ではありません!

于 2013-08-13T21:28:32.790 に答える
1

udp を使用せずにログに直接アクセスする 1 つの方法は、syslog4jを使用することです。必ずしも簡単だとは言えませんが、少なくとも syslog を再構成する必要はありません。

于 2013-08-16T00:01:14.123 に答える
0

これは私が考えることができる最も単純なクライアント コードです。

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):

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();
    }
  }
}
于 2014-07-22T16:51:20.440 に答える