- - PR -
AppletでLog出力を制御するには
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-10-25 12:11
Servletではlog4jをcommons-loggingでラップしてログを出力しております。
今回Appletを開発することになったのですが、Eclipse上からAppletViewerで 実行する分にはlog4jでコンソールに出力することが出来ます。 しかし、ブラウザで実行すると当然ながら出力することが出来ません。 そこで、java.util.loggingを使用すらためcommons-logging-api.jarを appletタグのarchive属性に指定してログ出力を試みましたが、INFOレベル 以上しか出力することが出来ません。 ローカルの$JAVA_HOME/jre/lib/logging.propertiesの「.level = INFO」を 「.level = FINE」にしても駄目。やはり、アプレットはローカルの設定ファイル など、セキュリティの関係上読んでないのかもしれません。 そこで、アプレットのアーカイブにlogging.properties形式のファイルを 含めて、LogManager.getLogManager().readConfiguration(getClass().getResourceAsStream()); を実行してみましたが、AccessControlExceptionが発生してしまいます。 ここで途方に暮れてしましました。皆さんはおとなしくSystem.out.printlnしているの でしょうか? | ||||
|
投稿日時: 2004-10-25 14:00
まず、読み込みすらできないのに書き込みができるかも、と思うのがどうかしています。
ログファイルとはいえ、ダウンロードしたアプレットに勝手に書き込みされたら怖くて 使えませんよね。 方法として考えられるのは、署名付アプレットにするか、サーバ側にログモニタを立てて SocketAppenderでログを出力するといったところでしょうか。 | ||||
|
投稿日時: 2004-10-25 14:31
言葉足らずでした。
「ログファイル」ではなく、「コンソールに出力するログ」の事を 言っています。 IDEからアプレットビューワーで実行できているのが、 ブラウザで実行すると期待した結果にならない時、JavaConsoleを使って デバッグすることになると思いますが、そのときにやはりSystem.outを 使うしか方法が無いのかと思い質問しました。 [ メッセージ編集済み 編集者: おかもと 編集日時 2004-10-25 14:46 ] | ||||
|
投稿日時: 2004-10-25 15:25
すいません、読み違えていました。
それであれば、構成情報をファイルからではなく、URLから取得してはどうでしょうか。 | ||||
|
投稿日時: 2004-10-25 16:01
試してみましたがやはりAccessControlExceptionが投げられます。
そこで、今一度APIのロギングに関する部分をじっくり読みますと、 「信頼されていないアプレットは、名前付きロガーを通常の方法で作成して使用できますが、ロギング制御設定を変更してハンドラの追加や削除を行なったり、ログレベルを変更することはできません。」 と言う一文を見つけることが出来ました。「信頼されていないアプレット」とは 署名付きアプレットだと思います。どうやらアプレットでは手軽にログレベルを 変更することは出来ないようですね。勉強になりました。 と言うことで、自前でデバッグ用ロギングの仕組みを作るか、System.outで 乗り切るしか無さそうです。後、アプレットは全部INFOにするってのも ありかもしれません。 どうもありがとうございました。 | ||||
|
投稿日時: 2004-10-25 23:36
お世話になっております。
JDK1.3や1.4でのApplet開発は行ったことがないので外しているかもしれませんが、デバッグの時のみjava.policyファイルを書き換える(あるいはextフォルダにAppletを含んだjarファイルを格納する)と、ローカルのファイルも読み込めるかもしれません。 ただ、この場合実稼動環境と動作が異なる危険性がありますので、あまりお勧めはできないかと思いますが・・・。 | ||||
|
投稿日時: 2004-10-25 23:47
なるほど。実はJavaのセキュリティ関連はほとんど理解していないので、 機会が有れば勉強しながらトライしてみようかと思います。 個人的にはJava Web Startを使ってJava Applicationを配布する方法に 転換すればAppletほど制約は受けないのではないかと思っています。 もっとも、Java Web Startも別の制約を受けるのかもしれませんが・・・。 参考になる意見をありがとうございました。 | ||||
1
