Flex日志详解
原文:http://yunzhongxia.iteye.com/blog/1150218 ????? 在 Flex中也提供了这样的一个框架,Logging API就是最基本的日志控制框架,只不过大部分的人都在用最简单的trace()函数罢了,类似于js开发常用的alert。 ???? ?Logging API不仅提供了最基本的trace功能,还提供了log target,也就是输出的方式,还提供了destination目的地的配置功能。我们可以根据日志范围过滤掉一些信息。除此之外还可以进行自定义log target,对框架进行扩展,例如我们可以把log信息输出到服务器端或者Alcon等。 ????? 下面先来看下Logging API主要类的UML关系图。????? LogLogger: 提供了发送log到一个特定target,它实现了ILogger接口。 AbstractTarget:定义了日志的输出地。TraceTarget就是将log输出到trace()函数输出的文件中,也就是flashlog.txt文件中,很多时候我们需要扩展日志输出地满足架构的需求,因为flashlog文件有大小限制,而且输出的日志会覆盖上次的日志。 LogEventLevel:定义了当前系统可输出的日志级别。 如下表所示。如果现在的level是ALL,那么系统中所有的日志都会被输出。如果是INFO,那么高于INFO的DEBUG信息就不会被输出。一般开发测试的时候级别为DEBUG或者INFO,上线之后调整为ERROR。另外,注意一点FATAL的值为1000,很符合扩展性的需求。这种设计理念在实际项目中经常会用到。 log target 过滤filters <mx:TraceTarget id="logTarget" includeDate="true" includeTime="true" includeCategory="true" includeLevel="true"> <mx:filters> <mx:Array> <mx:String>mx.rpc.*</mx:String> <mx:String>mx.messaging.*</mx:String> </mx:Array> </mx:filters> <!-- 0 is represents the LogEventLevel.ALL constant. --> <mx:level>0</mx:level> </mx:TraceTarget>
参数介绍 ? ?Flex提供的log功能如此强大,你是不是想跃跃欲试呢?但是flash并不是那么“完美”,需要完美做以下工作才可以进行log实战。 ?Flex的日志可以分为前端日志和后端日志,我们先来了解下前端日志。 ? ?logging日志文件。 ? ???? 首先要配置mm.cfg文件,如果没有可以自己创建一个,该文件根据操作系统的不同位置也会不同,详见下表格 在mm.cfg文件中写入: ErrorReportingEnable=1 TraceOutputFileEnable=1 MaxWarnings=0
?? 配置完mm.cfg文件后,会自动根据TraceOutputFileName生成一个日志文件,默认路径详见下表格:
日志文件配置完毕,我们就可以测试了,但是我们先来了解下几种记录日志的方法。
?
(1) Flex Trace
??
我们可以直接在代码中使用Trace方法向FlashLog.txt文件输出log消息。但Trace只能在Flash Debug Player中执行,客户的电脑上一般不是Debug版本,因此最好少用甚至不用Flex Trace来记录日志为好。
?
(2)? FlashTracer Firefox Plugin?
?? 这是一个相当好用的Firefox插件,可以在Firefox浏览器中实时跟踪log输出,非常利于调试。缺点就是必须用火狐浏览器进行测试,与浏览器耦合性比较大。
?
(3) Flex Logging API
???Flex 提供了一套非常好用的Logging API, 分别在SDK包mx.logging,mx.logging.target和mx.logging.error下。有兴趣的朋友可以去Adobe LiveDoc了解一下其详细用法。 ? ? 下面是一个简单的测试例子: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="init()" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <fx:Script> <![CDATA[ import mx.logging.LogLogger; import mx.logging.ILogger; import mx.logging.Log; import mx.logging.LogEventLevel; import mx.logging.targets.TraceTarget; private var logger:ILogger; private function init():void{ var logTarget:TraceTarget = new TraceTarget(); logger = new LogLogger("testlog"); logTarget.filters = ["*"]; logTarget.level = LogEventLevel.ALL; logTarget.includeCategory = true; logTarget.includeDate = true; logTarget.includeLevel = true; logTarget.includeTime = true; logTarget.addLogger(logger); Log.addTarget(logTarget); //trace("create complete"); } private function clickBtn():void{ logger.debug("It's the debug"); logger.info("It's the info"); logger.warn("It's the warn"); logger.error("It's the error"); logger.fatal("It's the fatal"); trace("ceshi dasdasd我来侧四下"); //trace("It's the first click on btn"); } ]]> </fx:Script> <mx:Button id="btn" label="OK" click="clickBtn()"/> </s:Application>
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |