`

Flex Logging

    博客分类:
  • Flex
阅读更多

我们在编写Flex应用程序的时候经常会忽略logging,发现问题需要debug的时候用的最多的就是Alert,其实使用Flex的logging功能相当简单。

 

1. Client Side Logging

Flex 的 Logging 功能有两种类型。Client side的了logging 和 Server side 的logging。Client side 的logging 比较适合程序员在开发的过程中进行代码追踪,调试。可能有的朋友会问,不是有强大的Flex Builder用来开发调试吗,干嘛还要不厌其烦的一行行打log?Flex Builder 是很强大,但在某些开发场景下不一定用的上FlexBuilder,譬如我们使用IBM RAD来开发Web应用,后台使用java,前台使用flex,中间的数据服务使用BlazeDS,在这种情况下,如何对前端代码Debug?所以 Client side logging 作为调试利器还是少不了的。下面简单介绍一下Flex的Client Side Logging。

 

1) 配置logging文件

Flex的Logging不象Java的Logging,我们不能自定义logging文件。Flex的logging文件位置都比较固定,具体位置视操作系统的不同而有所区别。Windows2000/XP系统一般在 C:\Documents and Settings\username\Application Data\Macromedia\Flash Player\Logs \FlashLog.txt 。除了FlashLog.txt文件外,我们还要设置另外一个文件mm.cfg在目录 C:\Documents and Settings\username 下,配置内容参考如下:

ErrorReportingEnable=1

TraceOutputFileEnable=1

MaxWarnings=1

 

2) Flex Trace

我们可以直接在代码中使用Trace方法向FlashLog.txt文件输出log消息。Trace方法只能在Flash Debug Player中执行。

 

3) FlashTracer Firefox Plugin

这是一个相当好用的Firefox插件,可以在Firefox浏览器中实时跟踪log输出,非常利于调试,下载地址是https://addons.mozilla.org/en-US/firefox/search?q=FlashTracer&cat=all

 

4) Flex Logging API

Flex 提供了一套非常好用的Logging API, 分别在SDK包mx.logging, mx.logging.target和mx.logging.error下。有兴趣的朋友可以去Adobe LiveDoc了解一下其详细的用法http://livedocs.adobe.com/flex/3/html/help.html?content=logging_09.html

什么都不说了,下面提供一个简单的使用LoggingAPI的例子

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()"
	 horizontalAlign="center" >
	
	<mx: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("xx");
				logTarget.filters = ["main"];
				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{
				//var logger:LogLogger = new LogLogger("*");
				
				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("It's the first click on btn");
			}
		]]>
	</mx:Script>
	
	<mx:Button id="btn" label="OK" click="clickBtn()"/>
	
</mx:Application>
 

2. Server Side Logging

Flex的Server Side Logging其实是Flex Logging API的一个配置版本,一般我们讨论Server Side Logging指的都是Flex的Data Services Logging,以BlazeDS为例,我们可以如下配置Server Side Logging (在BlazeDS的services-config.xml中)

<logging>
      <target class="flex.messaging.log.ConsoleTarget" level="Debug">
           <properties>
                <prefix>[BlazeDS]</prefix>
                <includeDate>false</includeDate>
                <includeTime>false</includeTime>
                <includeLevel>false</includeLevel>
                <includeCategory>false</includeCategory>
           </properties>
          <filters>
                <pattern>Endpoint.*</pattern>
                <pattern>Service.*</pattern>
                <pattern>Configuration</pattern>
         </filters>
      </target>
</logging>
 

1) Level

在以上的配置中,我们可以发现level属性,Flex中一共有6种level:

 

level Description
All Logs all messages
Debug Logs debug message. Debug messages indicate internal Flex activities
Error Logs error messages. Error messages indicate when a critical service is not available or a situation restricts use of the
application.
Info Logs information messages. Information messages indicate general information to the developer or administrator.
None No messages are logged.
Warn Logs warning messages. Warning messages indicate that Flex encountered a problem with the application, but the
application does not stop running.

 

Level的级别顺序为All-Debug-Info-Warn-Error-None,一般在开发过程中开启Info级别来追踪Flex数据传递中的问题就已经足够了,而在Production环境下开启Error级别更为合理。

 

2) Target Class

上面的配置中中比较重要的是Target Class,BlazeDS默认是flex.messaging.log.ConsoleTarget, Flex中Target的概念和Log4j中Appender的概念类似,我们不仅可以将log打印到console(ConsoleTarget),而 且可以输出至文件中(TraceTarget),特别地,还可以使用flex.messaging.log.ServletLogTarget来将Log 记录到默认的servlets中。Target是一个全局设置,所以如果我们在ActionScipts中创建Target就必须使用Log类的全局方法 addTarget来添加Target,从而使得Flex的log event能被该Target接收到。

 

3) Properties

  • prefix: log消息的前缀,会打印在log消息的最前面
  • includeDate: log消息是否输出日期
  • includeTime: log消息是否输出时间
  • includeLevel: 是否输出级别信息
  • includeCategory: 是否输出分类信息

 

4) Filter

再看一下filter配置,这主要是用来对Log作category过滤的。只有符合配置设置的log才会被打印出来。Flex Logging中category概念同样类似于Log4j中的category,Flex编程规范推荐我们使用类的全限定名来作为logger的 category名,我们一般在新建logger的时候制定logger所属的分类。

private var logger:ILogger = new LogLogger("com.storm.MyPlane")
 

如上所示,logger的category即是“com.storm.MyPlane”,如果我们在Fliter中只配置 了<pattern>com.storm.*</pattern>,那么只有位于包com.storm下的类的logging输 出才会被打印出来。

 

 总之,Flex的logging在概念方面和java非常相似,但是flex logging的灵活性相比java要低,但这也恰恰却更利于flex开发人员学习与理解。

分享到:
评论

相关推荐

    flex jar包(很全)

    7. **commons-logging.jar**:Apache Commons Logging库,提供了一种通用的日志接口,可以适应多种具体的日志实现。在Flex与Java交互的过程中,日志记录是调试和问题排查的重要工具。 综合来看,这些jar包主要用于...

    java集成flex需要的JAR包

    在CSDN找半天找不到一个全面的,我一生气,传了个全面的上来,包括 ...commons-logging.jar flex-messaging-common.jar flex-messaging-core.jar flex-messaging-proxy.jar flex-messaging-remoting.jar 呵呵

    将 Flex 集成到 Java EE 应用程序的最佳实践(完整源代码)

    commons-logging.jar flex-messaging-common.jar flex-messaging-core.jar flex-messaging-proxy.jar flex-messaging-remoting.jar 在 web.xml 中添加 HttpFlexSession 和 Servlet 映射。HttpFlexSession ...

    flex air记录日志的实例

    可以考虑使用第三方日志库,如AS3Commons的Logging框架,它提供了更完善的日志管理和配置能力。 总的来说,有效的日志记录能极大地提升Flex Air应用的可维护性和稳定性。通过自定义日志工具类,开发者可以定制适合...

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    commons-logging.jar flex-messaging-common.jar flex-messaging-core.jar flex-messaging-proxy.jar flex-messaging-remoting.jar 在 web.xml 中添加 HttpFlexSession 和 Servlet 映射。...

    Manning Flex on Java

    BlazeDS Remoting and Logging BlazeDS是一种强大的服务器端技术,用于实现Flex与Java之间的高效通信。本章将重点介绍如何配置和使用BlazeDS进行远程调用及日志记录。通过BlazeDS,开发者可以轻松地实现数据推送、...

    flex struts 整合需要的包

    - **Apache Commons库**:Struts经常依赖于Apache Commons库,如commons-logging.jar、commons-fileupload.jar等。 - **其他的依赖库**:可能还有其他库文件,如JSON库(json.org的json.jar),用于数据序列化和反...

    实现Flex和Java交互.rar

    - **Java服务器端日志**: 使用Java的logging框架如Log4j,记录服务器端的日志,辅助定位问题。 6. **安全性与优化** - **安全考虑**: 实现Flex和Java交互时,需要考虑数据传输的安全性,可能需要添加SSL/TLS加密...

    Flex企业应用开发实战源代码

    5.3.5 Logging 167 5.3.6 Security 169 5.3.7 运行期配置 170 5.4 BlazeDS的整合 175 5.5 小结 177 第6章 Flex+BlazeDS应用开发实例 178 6.1 需求分析 178 6.2 数据库设计 179 6.3 用Flash Builder配置企业...

    slf4fx java-flex日志框架

    通过SLF4FX,开发者可以利用已有的SLF4J(Simple Logging Facade for Java)接口在Java端,以及自定义适配器在Flex端实现日志记录。 **SLF4J简介:** SLF4J(Simple Logging Facade for Java)是一个为各种日志框架...

    Flex结合J2EE的资料

    其余的库如commons-beanutils、commons-collections、commons-lang、commons-logging都是Apache Commons项目的一部分,提供了各种通用的Java工具类,如BeanUtils帮助处理Java Bean,Collections提供了集合操作的扩展...

    slf4fx flex日志 java

    SLF4FX是一个专门为Flex应用程序设计的日志框架,它提供了与Java中的标准日志记录库SLF4J(Simple Logging Facade for Java)类似的接口,使得在Flex客户端和Java服务端都能实现统一的日志记录。这个框架使得开发者...

    Flex与Java使用Json数据交互JAR包

    6. **commons-logging-1.1.1.jar**:Apache Commons Logging是Java的日志抽象层,允许开发者选择底层的日志实现。在处理JSON交互时,日志记录对于调试和诊断问题至关重要。 使用这些库,开发者可以在Flex客户端和...

    Flex.on.Java.rar

    5. BlazeDS remoting and logging 6. Flex messenging Part 3: Going above and beyond 7. Securing and personalizing your application 8. Charting with DeGrafa 9. Desktop 2.0 with Adobe AIR 10. ...

    Flex整合Spring实现aop日志管理

    在这些方法中,你可以使用Java的日志框架,如Log4j或java.util.logging,来记录相关信息。 3. **暴露Spring服务**:通过Spring的Web服务支持,如`RestTemplate`或`@RestController`,将后端服务暴露为HTTP接口。...

    Maven构建全栈式Flex、BlazeDS和Spring集成解决方案–第三部分_整合全部应用

    ### Maven构建全栈式Flex、BlazeDS和Spring集成解决方案——第三部分:整合全部应用 #### 知识点概述 本篇文章将详细介绍如何利用Maven工具链构建一个完整的Flex、BlazeDS和Spring集成解决方案。文章分为三个部分...

    test_diskParMgr_Flex1.rar

    Python的`logging`库可以帮助记录调试信息、错误和警告,以便分析测试结果。 综上所述,"test_diskParMgr_Flex1.rar"包含的Python脚本可能是一个全面的测试框架,用于评估名为`diskParMgr_Flex1`的磁盘管理解决方案...

    FLEX自定义的日历组件,带有日志记录功能

    在FLEX中实现日志记录,可以使用内置的logging API,如Log类,或者引入第三方日志库如 Cairngorm 或 PureMVC。日志记录不仅可以记录用户操作,还可以记录程序内部的状态变化,如数据加载、网络请求等。通过将日志...

    FLEX4+Gilead+BlazeDS+pureMVC+spring2.5 MVC+hibernate3.3+SLF4J+CXF2.3.0 以及相关插件

    7. **SLF4J (Simple Logging Facade for Java)**:SLF4J是一个日志抽象层,允许开发者在运行时选择任何日志实现,如Logback或Log4j。这样可以提高项目的可移植性和灵活性。 8. **CXF 2.3.0**:Apache CXF是一个开源...

Global site tag (gtag.js) - Google Analytics