mx.loggingを使ってFlexアプリケーションをデバッグする

プロジェクトの開発中に、特に大きいなプロジェクトで、バッグの発生するのは避けないことです。モジュールが多くて、ソース量もすっごく多いので、何のモジュールの何の関数に不具合を発生する確定は難しいです。

一般的な対策として、運用中ログ(Fatal,error,warm,info,debug)を出力とします。何か問題を発生して出力されたログファイルを探すとエラーを発生の原因、場所を分かれますね。

Flexに対して、Flex SDK中に既にmx.logging.*パッケージを含めています。これを利用すると各レベルログの出力は簡単となれます。

詳しいサンプルソースは以下のようです(該当サンプルはファイルへ出力するまでではなくて、ログ情報を取得するまでだけです)。

1)、初期化、TraceTargetを追加する


var traceTarget : TraceTarget = new TraceTarget();
traceTarget.includeCategory = true;
traceTarget.includeDate = true;
traceTarget.level = LogEventLevel.ALL;//ログレベル、ALLだったら全種類出力
//traceTarget.filters = [“somecate”];//
Log.addTarget(traceTarget);

2)、LogEventリスナーをセット


log.addEventListener(LogEvent.LOG, logHandler);

3)、ログをサーバへ送信


private function logHandler(event : LogEvent) : void
{
var c : String = (event.currentTarget as ILogger).category;
//Alert.show(StringUtil.substitute(”cate:\t{0},\nmsg:\t{1},\nlevel:\t{2}”, c, event.message, LogEvent.getLevelString(event.level) )
,”use Log in flex3″ );
//call besiness delegate to send log info to server.
}

4)、ログ対象オブジェクトを取得


var log : ILogger = Log.getLogger(’somecate’);
//log.log(level, msg, …rest)

5)、サーバ側にログ情報を自由で分類して必要なところに保存とする(ファイルとかデータベースへとか)

Leave a Reply

Your email address will not be published. Required fields are marked *