★★ Java の宿題ここで答えます Part 61 ★★ at TECH
[2ch|▼Menu]
365:デフォルトの名無しさん
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ログメッセージなのでバラして送らないように注意。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4150日前に更新/337 KB
担当:undef