我有Air申请。它由一个HTML组件组成。我创建了一个flex应用程序,并在Air Application的HTML组件中启动了该应用程序。我能够捕获Air应用程序的跟踪输出,但我无法捕获flex应用程序的跟踪输出。因为这个flex应用程序是在Air应用程序的HTML组件中启动的。我使用vizy输出日志打印。如何捕获flex web应用程序的跟踪输出。感谢
答案 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");
}
}
}
此特定实现只是将所有跟踪存储在字符串向量中,但您可以对其进行修改以将日志保存到磁盘,将其发送到服务,在屏幕上跟踪或适合您的任何内容。