[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 09/09 18:35 / Filesize : 337 KB / Number-of Response : 938
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★★ Java の宿題ここで答えます Part 61 ★★



1 名前:JavaScriptは板違い、Web制作板をご利用ください [2007/05/15(火) 03:49:29 ]
【質問者へ】
回答者の便宜のため、以下の注意事項を遵守してください。
・質問は【課題提示用テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・数学問題は「○×法でせよ」だけでなく、その数式、前提条件も説明してください。
・JavaScriptは板違い、Web制作板をご利用ください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・回答されたら動作報告を必ずしてください。

【課題提示用テンプレ】
【 課題 】与えられた課題文をそのまま書きます。 《必須》
【 形態 】1. Javaアプリケーション(main()で開始)/2. Applet/3. Servlet/
       4. 携帯(開発環境のver.必須)/5. その他(明記のこと) 《必ず選択》
【 GUI  】1. AWTのみ/2. Swing/3. SWT/4. 制限なし/ 5. その他(明記すること)
       《GUIの課題の場合必ず選択》
【 期限 】提出期限、解答希望日を書きます。「できるだけ早く」はNG。 《必須》
【 Ver  】コンソールでjava -versionを実行し、その結果を貼ります。 《必須》
【 用語 】数学用語、専門用語の意味、説明を書きます。 《あれば必須》
【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。
       丸投げでない場合は、途中までのソースとその経過報告、
       質問点、疑問点を書きます(なるべく丸投げにしてください)。

【回答プログラムの掲載場所】
Java質問スレWiki  www.wikiroom.com/java/
ソースポストネット  sourcepost.sytes.net/

【前スレ】
pc11.2ch.net/test/read.cgi/tech/1169300052/

364 名前:デフォルトの名無しさん [2007/06/13(水) 22:29:33 ]
>>347
おながいます

365 名前:デフォルトの名無しさん mailto:sage [2007/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ログメッセージなのでバラして送らないように注意。

366 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 05:35:30 ]
3の方法だと、ログメッセージ毎にパケットを送るためには、
setOutputStreamで設定したOutputStreamがwriteで行う書き込みはバッファに格納するだけで、
StreamHandler#publishの方もオーバーライドして、こちらでバッファ全体を送る処理を行わないといけない。
処理が二ヶ所に分かれて見通しが悪いかも。

それなら、StreamHandlerを継承するよりもHandlerを継承して、Handler#publishを実装して、
この中でLogRecordをUDPパケットにして送出するようにした方がいいかもしれない。
publish以外にflushとcloseも実装しないといけないけど、とりあえず空実装でも大丈夫そう。

367 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 06:59:10 ]
>>347
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29461
java.util.logging.Handlerを継承する方法で。エラー処理はいい加減。

368 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 07:12:14 ]
忘れてた。
DatagramSocketHandler#close()は空実装にしているけど、socketをcloseするべきかも。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<337KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef