`
yunzhongxia
  • 浏览: 648394 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex日志详解

 
阅读更多

      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>

 

参数介绍
 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
   如果值为1,则在导出文件中写入错误报告。默认值为0
   MaxWarnings
   写入到log文件中的最大的错误条数。如果希望不限制错误条数,将其值设置为0即可
   TraceOutputFileEnable
   值为1则将trace内容导出到log文件
   TraceOutputFileName
   导出的log文件的路径和文件名,如果不定义,则会将log内容写入到mm.cfg文件相同目录下的flashlog.txt

 

 

   配置完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>

 

 

 输入结果如下:
  • 大小: 13.1 KB
  • 大小: 14.2 KB
  • 大小: 42.4 KB
  • 大小: 56.4 KB
  • 大小: 21.1 KB
  • 大小: 27.1 KB
0
1
分享到:
评论
4 楼 Sev7en_jun 2011-11-19  
试了 但没效果,程序可以跑,但是日志没有
我的是win7+flex3
mm.cfg也放到了指定目录,不清楚的是为什么是mm.cfg这个名字很奇怪,程序是怎么加载这个文件的呢?
3 楼 Sev7en_jun 2011-11-19  
limingnihao 写道
请问mm.cfg文件放在什么位置?


logging日志文件。
     首先要配置mm.cfg文件,如果没有可以自己创建一个,该文件根据操作系统的不同位置也会不同 楼上没认真看
    

2 楼 Sev7en_jun 2011-11-19  
    首先要配置mm.cfg文件,如果没有可以自己创建一个,该文件根据操作系统的不同位置也会不同,详见下表格    这段有讲对应系统的对应位置

1 楼 limingnihao 2011-09-30  
请问mm.cfg文件放在什么位置?

相关推荐

    Flex 3 RIA开发详解与精深实践

    综上所述,《Flex 3 RIA开发详解与精深实践》这本书会全面介绍Flex 3的各个方面,帮助开发者掌握这一强大的RIA开发技术,无论是初学者还是有经验的开发者,都能从中受益匪浅。通过学习,开发者可以构建出更具吸引力...

    Flex3.0RIA开发详解电子教程23

    Flex提供了一些内置的调试和日志记录工具。 10. **优化和性能**:优化Flex应用涉及到减少SWF大小、优化组件使用、合理处理数据加载等方面,以提供更快的加载速度和流畅的用户体验。 11. **Flex应用部署**:发布...

    flex与java实现的日志管理

    《Flex与Java实现的日志管理系统详解》 在IT领域,日志管理是系统维护和故障排查的重要环节。本文将深入探讨如何使用Flex前端与Java后端技术构建一个完整的日志管理系统,包括登录、注册、日志管理和图片上传等功能...

    flex 3 RIA 开发详解与精深实践 Source

    Flex 3 RIA 开发详解与精深实践是关于创建富互联网应用(Rich Internet Applications,简称RIA)的专业指南,尤其侧重于使用Adobe Flex 3框架。这个资源包含第1章到第6章的源代码,这为我们提供了深入理解Flex编程...

    springmvc与Flex集成示例

    Spring MVC与Flex集成示例详解 在现代Web应用开发中,Spring MVC作为强大的后端MVC框架,提供了灵活的控制层实现,而Flex作为一种富互联网应用程序(RIA)开发平台,可以提供丰富的用户交互体验。将两者结合,可以...

    flex的处理和相应的问题

    ### Flex的处理与相应问题详解 #### 一、Flex简介 Flex是一种开源框架,由Adobe Systems维护,用于构建跨浏览器的富互联网应用(RIA)。它允许开发者使用XML和ActionScript来创建复杂的用户界面组件,并且可以很容易...

    Flex3 compiler API (En)

    ### Flex3 Compiler API详解 #### 一、简介 Flex3 Compiler API 是一款强大的工具,它允许开发者通过Java应用程序来编译Flex应用。这种能力为那些希望利用Java的强大功能与Flex的丰富界面相结合的开发者提供了极大...

    win-flexbison工具

    **win-flex-bison工具详解** 在编程世界中,解析器和词法分析器是构建编译器或解释器的关键组成部分。`win-flex-bison`工具是Windows环境下对开源的`flex`和`bison`工具的封装,为开发者提供了一种在Windows系统上...

    flex 重写组件

    ### Flex 重写组件详解 #### 一、为何需要重写Flex组件? 在Flex开发过程中,经常遇到已有的组件无法完全满足项目需求的情况。这些需求可能包括但不限于改变组件的外观、增加新的功能特性或者实现更复杂的交互逻辑...

    Using Flex with Spring

    《使用Flex与Spring集成开发详解》 在现代Web应用程序开发中,Flex作为一款强大的富互联网应用(RIA)开发框架,以其丰富的用户界面和强大的交互能力备受开发者青睐。与此同时,Spring框架作为Java企业级应用的事实...

    xyzp_flex_flex+java的档案管理系统_Flex+Java_XYZP_

    《Flex+Java档案管理系统XYZP详解》 在信息化建设中,档案管理系统的存在至关重要,它为企业数据的安全存储、高效检索提供了便利。本文将详细介绍一款基于Flex和Java技术开发的档案管理系统——XYZP,该系统充分...

    flex on rails文档

    ### Flex on Rails 文档知识点详解 #### 一、关于 Flexible Rails **Flexible Rails** 是一个旨在结合 **Flex** 和 **Rails** 技术优势的框架。通过将这两者结合,可以构建出高度交互且功能丰富的 Web 应用程序。本...

    flex 代码转换器 技术手册

    #### 三、Flex 输入文件格式详解 Flex 输入文件通常由三个主要部分组成:定义部分、规则部分和用户代码部分。 - **定义部分**:这部分包含了预处理器指令、包含文件以及其他与 C 语言兼容的声明和定义。 - **规则...

    flex-spring.pdf

    ### Flex与Spring整合详解 #### 一、Spring简介与安装 Spring框架是一个开源的应用框架,主要为Java平台设计,提供了一种轻量级的方式来进行应用程序的开发和部署。Spring的核心特性包括依赖注入(DI)和面向切面...

    flex和java整合的学选课系统java代码

    《Flex与Java整合的学生选课系统Java后台代码详解》 在现代教育信息化的背景下,学生选课系统的开发显得尤为重要。本篇文章将详细探讨一个基于Flex前端和Java后端整合实现的学生选课系统,旨在帮助开发者理解和掌握...

Global site tag (gtag.js) - Google Analytics