有什么方法可以在不以调试模式运行时捕获 Flex 应用程序的跟踪语句?
或者在不运行调试器时还有其他方法可以输出日志信息吗?
目前我正在尝试修复一个仅在非常特定的部署场景中出现的错误,但我可以看到这在某些情况下对客户在报告错误或其他问题时将日志发送给技术支持很有用。
有什么方法可以在不以调试模式运行时捕获 Flex 应用程序的跟踪语句?
或者在不运行调试器时还有其他方法可以输出日志信息吗?
目前我正在尝试修复一个仅在非常特定的部署场景中出现的错误,但我可以看到这在某些情况下对客户在报告错误或其他问题时将日志发送给技术支持很有用。
我想您是在谈论 Adobe Flex,针对 Flash Player?
如果是这样,您可以编写自己的日志记录包装类,将发送给它的日志消息传播到多个目标(如跟踪堆栈和内部存储器,以便您可以从应用程序内部访问日志,例如,当用户使用时将其发送到服务器同意发送错误报告)。另请参阅Flex 日志框架,了解已经存在的类似内容。
我实际上做过这样的事情——我有一个Log
用静态方法调用的类log()
,我在我的应用程序中使用,并且这个类将发送给它的所有消息通过, 转发到跟踪堆栈到“日志控制台" 应用程序通过 LocalConnection 和/或 Socket 在同一主机上运行(套接字连接显然比 LocalConnection 快很多),并将它们本地保存到一个数组中,以便用户可以直接从应用程序内发送错误报告和日志输出.debug()
error()
trace()
这种变化当然意味着您必须将trace()
代码中的所有命令转换为对日志系统的调用,但这可以通过正则表达式搜索和替换轻松实现。
Google Code 上有一个名为Thunder Bolt的项目,它允许您编写在 Firefox 中运行应用程序时将出现在FireBug中的日志消息(当然假设您安装了该扩展程序。)
使用此工具进行日志记录非常简单:
import org.osflash.thunderbolt.Logger;
var myNumber: int = 5;
var myString: String = "Lorem ipsum";
Logger.error ("Logging two objects: A number typed as int and a string", myNumber, myString);
我以前用过alcon。
你可以试试 Farata Systems 的 XPanel。这是一个本机 Windows UI,它可以使用 Flex 3 Logging API 显示日志消息,即使对于在浏览器中运行的 Flex 应用程序也是如此。不幸的是,他们重新设计了他们的网站,我再也找不到它了……也许谷歌会帮助你。
我们使用 JavaScript 做了一些不同的事情。客户可以打开一个“特殊”页面,该页面显示使用 DHTML 的日志记录和跟踪语句。Flex 应用程序调用一个 JavaScript 函数,该函数告诉应用程序该页面是否打开。如果不是,则禁用日志记录。如果打开,则启用日志记录并将所有日志语句附加到此页面。
请注意,由于沙盒限制,无法始终将日志记录输出写入文件系统。但是,如上所述,客户可以轻松地复制和粘贴日志记录窗口的输出。