0

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

4

1 回答 1

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");
        }
    }
}

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

于 2013-08-28T11:39:46.513 回答