Tadotter - Eclipse RCP版 (1.1.2.v20090921) | 2009-09-21 15:19 |
Tadotter - JavaFX版 (2.0.1) | 2009-07-06 11:19 |
JavaFXTips_Logging
JavaFXから標準出力に情報を出力するにはprintln関数を使えばいいのですが、 もし、サードパーティのライブラリをJavaFXアプリケーションから呼び出していて、 そのライブラリが例えばjava.util.loggingを使っていたとしましょう。
どうしてもそのライブラリから吐き出されるfineレベル(デフォルトでは出ないレベル) のログをJavaコンソールに出して不具合の原因調査をしたい、 そんなときがあるかも知れません。 JAVA_HOME\jre\lib\logging.properties を書き換えずに以下の方法で対応できます。
次の例は、com.hisagisoftパッケージ及び下位パッケージのクラスで、 レベルFINE以上のログをコンソールに出力する例です。 Web Start起動とブラウザ起動では、Javaコンソールに出力します。
import java.util.logging.Level; import java.util.logging.Logger; var logger:Logger; function run(){ logger = Logger.getLogger("com.hisagisoft"); logger.setLevel(Level.FINE); for(hdl in logger.getParent().getHandlers()){ hdl.setLevel(Level.FINE); } logger.finest("FINEST"); logger.finer("FINER"); logger.fine("FINE"); logger.info("INFO"); logger.warning("WARNING"); logger.severe("SEVERE"); }
この例をWeb Start起動/ブラウザ起動するとJavaコンソールに例外が記録されます。 上の赤い部分が抵触しています。
出力結果:
java.security.AccessControlException: access denied (java.util.logging.LoggingPermission control)
この例のWeb Start起動/ブラウザ起動では、 NetBeans IDEの「プロジェクトプロパティ>アプリケーション」で 「自己署名つきJAR」をチェックしてから起動することが必要です。
出力結果:
2009/08/03 16:50:05 com.hisagisoft.javafx.tips.Logging javafx$run$ 詳細レベル (低): FINE 2009/08/03 16:50:05 com.hisagisoft.javafx.tips.Logging javafx$run$ 情報: INFO 2009/08/03 16:50:05 com.hisagisoft.javafx.tips.Logging javafx$run$ 警告: WARNING 2009/08/03 16:50:05 com.hisagisoft.javafx.tips.Logging javafx$run$ 致命的: SEVERE
FINE以上が出力されました。 一方、FINEよりもリスクの低いFINERとFINESTは出力されませんでした。
[PageInfo]
LastUpdate: 2009-08-03 23:11:09, ModifiedBy: happyhills
[Permissions]
view:all, edit:login users, delete/config:members