在Flash / Flex中,是否可以在代码中捕获“trace”的结果?
因此,例如,如果代码的一部分调用trace("foo")
,我想自动捕获字符串"foo"
并将其传递给其他函数。
编辑:我对尝试使用trace
而不是正确的日志框架感兴趣...我想为FlexUnit编写一个插件,所以当测试失败时可以说例如:“测试blah
失败。这是输出:... traced text ...
”。
编辑2 :我仅想要捕获trace
的结果。或者,换句话说,即使我的代码使用了正确的日志记录框架,我也希望优雅地处理仍在使用trace
进行日志记录的代码。
答案 0 :(得分:1)
据我所知,不可能在外部进行,谷歌没有结果。您是否考虑过为输出创建变量,然后将其添加到日志中,例如:
var outputtext = "text";
trace(outputtext);
// log outputtext here
如果不可行,请忽略,但我想不出任何其他方式。
但是,如果仅用于开发目的,您可以在内部执行此操作:http://broadcast.artificialcolors.com/index.php?c=1&more=1&pb=1&tb=1&title=logging_flash_trace_output_to_a_text_fil
答案 1 :(得分:0)
如果要将跟踪写入日志,可以使用Flash Player的调试版本并告诉它记录跟踪。
答案 2 :(得分:0)
我有一个Debug.write
方法,通过LocalConnection
发送传递的消息,我使用它而不是trace
。我的要求是即使在SWF用完创作环境时也能捕获调试语句,但您可以使用此方法捕获跟踪消息。
答案 3 :(得分:0)
据我所知,您不想使用日志记录,这当然是正确的方法。
因此,你可以简单地创建一个带有方法跟踪的静态类,并从应用程序的任何地方调用此方法,这就是如何将所有跟踪到达一个地方,然后在打印之前可以使用跟踪字符串执行任何操作它控制台。
另一种方法是创建冒泡跟踪事件并在需要跟踪消息时调度它,然后为其添加监听器并捕获所有事件...... 希望它的帮助
答案 4 :(得分:0)
我建议查看瑞士框架的来源。他们在应用程序范围内使用flex内部日志Logger,并在其大多数代码中使用最佳实践。