FlexのログをFirebugで出力する

FlexのログをFirebugで出力する

Table of Contents

しかだよ。

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>

こんな感じでログが出ます。

f:id:re_shikajiro:20091229095709p:image

トレースも欲しい

このクラスはこのままだと、コンソールに出てきません。ので拡張します。

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