Flex日志使用及配置
? ? Flex集成一个Log框架,可以完成很多用trace()做debug时完成不了的功能输 出log时可以实现分等级(共5+1级),用过滤器指定输出的类,以及输出方式(默认为 trace)。
需要用到的类如下
? ??TraceTarget:继承AbstractTarget,该类提供使用全局trace()方法输出日志消息的记录程序目标。
? ??Log:主类,有几个静态方法,添加/移除 TraceTarget和获取ILogger。
? ? LogEventLevel:定义了log等级的常量。
? ??
? ? Log等级说明:5级 和 All
? ? 分别是ALL(0) DEBUG(2) INFO(4) WARN(6) ERROR(8) FATAL(1000)
? ? 每 个等级在输出时都包含了自身及后续等级的信息,即当把等级设定为INFO时,INFO WARN ERROR FATAL中的信息都会被输出,而排在INFO前面的DEBUG则不会被输出?
?
? ? example :
<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%" creationComplete="init()"> <mx:Script> <![CDATA[ import com.commons.STraceTarget; import mx.logging.Log; import mx.logging.LogEventLevel; import mx.logging.LogLogger; private var logger:LogLogger private function init():void { var logTarget:STraceTarget; logTarget = new STraceTarget(); //继承TraceTarget logTarget.filters = ["com.*"]; logTarget.level = LogEventLevel.ALL; logTarget.includeCategory = true; //输出信息是否包含class名 logTarget.includeLevel = true; //输出信息是否包含等级 logTarget.includeDate = false; //输出信息是否包含日期 logTarget.includeTime = false; //输出信息是否包含时间 logger = Log.getLogger("Test") as LogLogger; //此处getLogger参数只是作为标志位使用,如果此处写为 com.Test(com包下面并没有Test类)也可以输出日志信息,详细可参考getLogger方法 //logTarget.addLogger(logger); //使用指定的记录程序设置此目标 Log.addTarget(logTarget); //允许指定的目标开始接收日志事件的通知。 } private function logMessage():void { logger.debug(":debug......"); logger.info(":info......"); logger.error(":error......"); } ]]> </mx:Script> <mx:Button label="add Message" click="logMessage()" /> </mx:Application>
? ??
? ? 此处STraceTarget继承TraceTarget:
package com.commons{import mx.controls.Alert;import mx.core.mx_internal;import mx.logging.targets.TraceTarget;use namespace mx_internal;public class STraceTarget extends TraceTarget{public function STraceTarget(){super();}/** * 由该方法输出日志,可以重写此方法以实现将日志写入服务器(需要服务支持),或者将日志写入本地 */override mx_internal function internalLog(message:String):void{Alert.show(message);}}}
?
?
? ?