如何捕获flex应用程序的跟踪输出?

时间:2013-08-27 13:10:53

标签: actionscript-3 flex air flash-builder flex3

我有Air申请。它由一个HTML组件组成。我创建了一个flex应用程序,并在Air Application的HTML组件中启动了该应用程序。我能够捕获Air应用程序的跟踪输出,但我无法捕获flex应用程序的跟踪输出。因为这个flex应用程序是在Air应用程序的HTML组件中启动的。我使用vizy输出日志打印。如何捕获flex web应用程序的跟踪输出。感谢

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案,使用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");
        }
    }
}

此特定实现只是将所有跟踪存储在字符串向量中,但您可以对其进行修改以将日志保存到磁盘,将其发送到服务,在屏幕上跟踪或适合您的任何内容。