ベースアーティクル
Adobe AIR Flex をだれでも簡単に作成できるパッケージ : ★ 超シンプル FLV プレーヤー ★
▼ この記事の本文
Flex3 の時は、trace メソッドで出力されたのですが、何故かうまくいかない
ので、王道の 『logging API』を使用します。
まず最初に以下の定義をします
import mx.logging.targets.*;
import mx.logging.*;
private var logger:ILogger = Log.getLogger("MyLogger");
ここで、MyLogger はなんでもいいです。ログの出力行の最後に出力される文字列
で、ここでは結局出力していません(includeCategory )。その設定も含めて、以下
のコードで利用します。
var traceTarget:TraceTarget = new TraceTarget();
traceTarget.level = LogEventLevel.ALL;
traceTarget.filters = ["*"];
traceTarget.includeDate = false;
traceTarget.includeTime = false;
traceTarget.includeLevel = false;
traceTarget.includeCategory = false;
Log.addTarget(traceTarget);
■ includeDate 〜 includeCategory はログ行に出力するかどうかです
( 詳細は、オンラインドキュメントか解説ページ )
■ Log クラスは、mx.logging に定義されています
▼ 出力です
( info 以外にもメソッドはありますが、ここでは必要無いでしょう )
logger.info( "initData() が実行されました" );
ログの環境設定
これは、Flex3 の時と同じでした。『C:\Documents and Settings\ユーザ』ディレクトリに
mm.cfg ファイルを作成して、TraceOutputFileEnable=1 を書き込むとファイルに出力されて
TraceOutputFileEnable=0 にすると標準出力に出力されます。出力されるファイルは、
C:\Documents and Settings\ユーザー\Application Data\Macromedia\Flash Player\Logs
の flashlog.txt です。( これを変える方法はまだ知りません )
※ 標準出力を使いたい場合
日本語が化けるので、Flex3 のころの内容ですが参考になると思います
( Adobe AIR Flex をだれでも簡単に作成できるパッケージ内の記述 )
【実行中の trace の日本語処理について】
デフォルトでは、Flex 内が UTF8 なので化けます。
ファイルに書き込めば、正しく表示されますが、
どうしてもコマンドプロンプト上で日本語トレースしたい場合は以下のようにします。
1) ファイル名を指定して実行から、cmd.exe を実行してコマンドプロンプトを表示
2) プロパティのフォントで MS ゴシックを選択して、「同じタイトルのウインドウに適用する」を選ぶ
3) コマンドプロンプトを閉じる
4) __air_start.txt を開いて、chcp 65001 を実行させるように ; を削除する
5) air_start.wsf を実行する
※ mode con: cp select=65001 でもコードページは変更できます
このオプションは、バグってるようなので、日本語は表示されますが欠けたりします。
コンソールの再描画が正しくされていないようなので、ウインドウのサイズを変更したり
最小化して戻したりすると正しく表示されます。
「同じタイトルのウインドウに適用する」を解除したい場合は、
HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe のレジストリキーを削除します。
( 環境毎に違うと思いますが、HKEY_CURRENT_USER\Console の下に作成されます )
ソースコード
2年半ぶりに Air Flex のコードを整備しました
Web Flex のログコード
import mx.formatters.*;
// *********************************************************
// ログ表示
// *********************************************************
public function log(data:Object):void {
// 日付編集用
var fmt:DateFormatter = new DateFormatter();
fmt.formatString = "YYYY/MM/DD HH:NN:SS";
var logdt:String = fmt.format( new Date );
// JavaScript の呼び出し
ExternalInterface.call(
"console.log", logdt,
" "+data
);
}
昔は Firebug 使ってずっとこれで出力してましたが、今では全てのブラウザで
console.log が使えるので普通に利用できるはずです
posted by
at 2012-03-22 23:39
|
Comment(0)
|
オワコン
|

|