07/06/14 04:52:54
>>347
普通syslogdは514/udpだからUDPで514番ポートにログメッセージを送る必要がある。
しかし、SocketHandlerはTCP用。514/tcpをsyslogdが受け付ける仕組みを持たない限り当然エラーになる。
java.util.logging.*ではUDP版のSocketHandlerは無かった気がする。もしあればそれを使えば動くはず。
java.util.logging.*を使用してってことだけど、
1.Log4Jならsyslogに対応していたと思うので、使えるならそれを使う。
2.UDPを扱えるjava.util.logging.Handlerのサブクラスを探して(例えばLog4Jではないがjakartaプロジェクトにあるかも)を使う。
1,2では設問から外れて駄目だということなら、
3.SocketHandlerの代わりにスーパークラスのStreamHandlerを継承して、
setOutputStreamメソッドでログ情報をUDPで流すように実装したOutputStreamを設定する。
ログメッセージをバッファに入れて、DatagramPacket(byte[], int, InetAddress, int)でパケットにして、
DatagramSocket#send(DatagramPacket)で送る。1パケットが1ログメッセージなのでバラして送らないように注意。