0

Air アプリケーションがあります。HTML コンポーネントで構成されます。flex アプリケーションを作成し、このアプリケーションを Air アプリケーションの HTML コンポーネントで起動します。Air アプリケーションのトレース出力はキャプチャできますが、flex アプリケーションのトレース出力はキャプチャできません。この flex アプリケーションは、Air アプリケーションの HTML コンポーネントで起動されます。ログ出力を出力する vizy を使用します。Flex Web アプリケーションのトレース出力をキャプチャするにはどうすればよいですか。ありがとう

4

1 に答える 1

0

考えられる解決策の 1 つは、デバッグ トレースに mx.logging.Log を使用し、カスタム LogTarget を使用してそれらをキャプチャすることです。

それは次のようになります。必要なオブジェクトを宣言します。

private var logTarget:MyLogTarget= new MyLogTarget();
private var myLog:ILogger;  

アプリケーションを初期化するロギングをセットアップします。

myLog=Log.getLogger("MyApp");
Log.addTarget(logTarget);

ログのもの:

myLog.info("Something something.");
myLog.warn("This is weird!");
myLog.error("This shouldn't happen!");

ソリューションの要は、カスタム ログ ターゲット MyLogTarget.as です。

package 
{
    import mx.logging.LogEvent;
    import mx.logging.targets.LineFormattedTarget;

    public class MyLogTarget extends LineFormattedTarget
    {

        public var log:Vector.<String>=new Vector.<String>;

        public function MyLogTarget()
        {
            super();
        }

        override public function logEvent(event:LogEvent):void
        {
            trace(event.message);
            log.push(event.message+"\n");
        }
    }
}

この特定の実装では、すべてのトレースを文字列のベクトルに保存するだけですが、ログをディスクに保存したり、サービスに送信したり、画面上でトレースしたり、必要に応じて変更したりできます。

于 2013-08-28T11:39:46.513 に答える