Flex日志详解
来源:互联网 发布:网络2无internet访问 编辑:程序博客网 时间:2024/06/17 06:42
log4j对于java开发者最熟悉不过了,log4j不仅可以控制日志输出的目的地,还可以控制日志输出级别,便于调试和发布,一个好的产品需要记录很多日志便于日后的维护,尤其是产品上线之后。
在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
logTarget.filters=["mx.rpc.*","mx.messaging.*"];
这个例子中就是指定了我们要输出日志的类和包。只有在mx.rpc和mx.messaging包下的类才能输出log,忽略其他的。也可以是mxml形式:
- <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>
<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>
参数介绍
includeDate="true",输出的log带日期
includeTime="true", 输出的log带时间
includeCategory="true",输出的log带分类信息,也就是哪个类或者控件输出的log
includeLevel="true",输出的log是否带level信息,如[INFO],[DEBUG]等。
Flex提供的log功能如此强大,你是不是想跃跃欲试呢?但是flash并不是那么“完美”,需要完美做以下工作才可以进行log实战。
Flex的日志可以分为前端日志和后端日志,我们先来了解下前端日志。
logging日志文件。
首先要配置mm.cfg文件,如果没有可以自己创建一个,该文件根据操作系统的不同位置也会不同,详见下表格
在mm.cfg文件中写入:
- ErrorReportingEnable=1
- TraceOutputFileEnable=1
- MaxWarnings=0
ErrorReportingEnable=1TraceOutputFileEnable=1MaxWarnings=0
ErrorReportingEnable
如果值为1,则在导出文件中写入错误报告。默认值为0
MaxWarnings
写入到log文件中的最大的错误条数。如果希望不限制错误条数,将其值设置为0即可
TraceOutputFileEnable
值为1则将trace内容导出到log文件
TraceOutputFileName
导出的log文件的路径和文件名,如果不定义,则会将log内容写入到mm.cfg文件相同目录下的flashlog.txt
配置完mm.cfg文件后,会自动根据TraceOutputFileName生成一个日志文件,默认路径详见下表格:
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>
<?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>
输入结果如下:
![](http://dl.iteye.com/upload/attachment/537202/04479f8d-82da-3dd4-84e9-dfa13ddc9dab.jpg)
- Flex日志详解
- Flex日志详解
- Flex日志详解
- Flex日志详解
- Flex日志详解
- Flex日志详解
- flex详解
- flex详解
- flex详解
- FLEX详解
- flex详解
- Flex日志管理
- Flex日志系统
- Flex日志 logging API
- flex 日志 mm.cfg
- Flex 输出日志
- Flex 日志管理
- flex-grow、flex-shrink、flex-basis详解、flex:1;详解
- WebApp最佳实践策略篇之审视移动场景的独特性
- C#浏览器捕捉javascript的window.open
- TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节
- GetSystemMetrics
- VC注释宏含义
- Flex日志详解
- 模板方法模式Templet Method Pattern
- 电视平台下的四向键交互原则
- TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
- Windows中设置应用程序最小化后放在系统托盘
- TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute
- dispose的困惑
- TCP/IP详解学习笔记(2)-数据链路层
- TCP/IP详解学习笔记(1)-基本概念