Log : use Log in flex3
在大型商业项目开发中,bug在所难免。关键是在bug出现后,要迅速知道这个bug是由那个模块,那个类产生的。在开发过程中,没有理由不把开发日志记录下来,包括Fatal,error,warm,info,debug等信息。这些信息最好可以查找,检索,这对于后期项目优化尤其重要。本文主要介绍如何在flex3开发里记录开发日志。
所幸flex sdk提供了mx.logging.*包用于在运行时记录开发日志,在flex3如何呢?简要步聚如下:
一、初始化,并添加TraceTarget。代码示例:
var traceTarget : TraceTarget = new TraceTarget();
traceTarget.includeCategory = true;
traceTarget.includeDate = true;
traceTarget.level = LogEventLevel.ALL;//设置记录类型,ALL为全部记录。
//traceTarget.filters = ["somecate"];//此步没有必要,稍后陈述弊见。
Log.addTarget(traceTarget);
traceTarget.includeCategory = true;
traceTarget.includeDate = true;
traceTarget.level = LogEventLevel.ALL;//设置记录类型,ALL为全部记录。
//traceTarget.filters = ["somecate"];//此步没有必要,稍后陈述弊见。
Log.addTarget(traceTarget);
二、设置LogEvent监听
log.addEventListener(LogEvent.LOG, logHandler);
三、发送日志记录到server
当有日志被记录时,则触发logHandler,在logHandler中收集日志的类别,信息主体,等级,发送到服务端。
private function logHandler(event : LogEvent) : void
{
var c : String = (event.currentTarget as ILogger).category;
//Alert.show(StringUtil.substitute(”cate:\t{0},\nmsg:\t{1},\nlevel:\t{2}”, c, event.message, LogEvent.getLevelString(event.level) )
,”use Log in flex3″ );
//call besiness delegate to send log info to server.
}
{
var c : String = (event.currentTarget as ILogger).category;
//Alert.show(StringUtil.substitute(”cate:\t{0},\nmsg:\t{1},\nlevel:\t{2}”, c, event.message, LogEvent.getLevelString(event.level) )
,”use Log in flex3″ );
//call besiness delegate to send log info to server.
}
四、记录
在其它模块里,用Log.getLogger获取Log实例。只要category相同,获取的实例便相同。
var log : ILogger = Log.getLogger(’somecate’);
//log.log(level, msg, …rest)
//log.log(level, msg, …rest)
五、在服务端处理收集的log信息,分文别类储存,最好存在数据库里。提供查找、删除、过滤等功能。
Demo:http://blog.sban.com.cn/flex/use-Log-in-flex3.swf
sban 2008年1月22日于北京
Related Posts






