FlexのログをFirebugで出力する
しかだよ。
Flexのログはconsoleにしかでないから、本番サーバーに配置したときにログが見れないから不便だよね。
ググったらFirebugにログを出力するクラスがありました。
Danny Patterson » Firebug Target for Flex Logging Framework
<mx:Script> <![CDATA[ import mx.logging.ILogger; import mx.logging.Log; import mx.logging.LogEventLevel; import com.dannypatterson.logging.FirebugTarget; //パッケージ付きのファイル名 //どこでエラーが出たかわかりやすくなります。 private static var log:ILogger = Log.getLogger("jp.ne.hatena.d.re_shikajiro.firebugLogger"); private function init():void{ initLog(); //メソッド名を書いとくとエラーの箇所がわかりやすいです。 log.debug("init() デバッグ用"); log.info("init() 通常ログ"); log.error("init() エラー用ログ"); log.warn("init() 警告用ログ"); log.fatal("init() 異常用ログ"); log.log(LogEventLevel.DEBUG,"自由に選べるログ"); log.debug("init() 引数も渡せます。:{0}", this.url); } private function initLog():void { var traceTarget:FirebugTarget = new FirebugTarget(); traceTarget.includeCategory = true; traceTarget.includeDate = true; traceTarget.includeTime = true; traceTarget.includeLevel = true; traceTarget.level = LogEventLevel.ALL; traceTarget.filters = ["*"]; Log.addTarget(traceTarget); } ]]> </mx:Script>
トレースも欲しい
このクラスはこのままだと、コンソールに出てきません。ので拡張します。
TraceTarget.asに書いてるのをコピペします。
import mx.core.mx_internal;
use namespace mx_internal;
...
override mx_internal function internalLog(message:String):void {
trace(message);
}
これでコンソールにも、Firebugにもログが出るようになりました!
[SWF] Users:shikajiro:Documents:Flex Builder 3:firebug:bin-debug:firebug.swf - 655,261 バイト (圧縮後)
12/25/2009 19:56:06.961 [DEBUG] jp.ne.hatena.d.re_shikajiro.firebugLogger init() デバッグ用
12/25/2009 19:56:06.965 [INFO] jp.ne.hatena.d.re_shikajiro.firebugLogger init() 通常ログ
12/25/2009 19:56:06.968 [ERROR] jp.ne.hatena.d.re_shikajiro.firebugLogger init() エラー用ログ
12/25/2009 19:56:06.971 [WARN] jp.ne.hatena.d.re_shikajiro.firebugLogger init() 警告用ログ
12/25/2009 19:56:06.972 [FATAL] jp.ne.hatena.d.re_shikajiro.firebugLogger init() 異常用ログ
12/25/2009 19:56:06.973 [DEBUG] jp.ne.hatena.d.re_shikajiro.firebugLogger 自由に選べるログ
12/25/2009 19:56:06.974 [DEBUG] jp.ne.hatena.d.re_shikajiro.firebugLogger init() 引数も渡せます。:file:///Users/shikajiro/Documents/Flex Builder 3/firebug/bin-debug/firebug.swf