介紹一個Flex提供的Logging framework,這是原生的功能,API可在mx.logging下找到,用起來跟trace差不多,最大的不同是Logging有分成以下五層:
程式範例
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="main();">
<mx:Script>
<![CDATA[
import mx.logging.ILogger;
import mx.logging.Log;
import mx.logging.targets.TraceTarget;
import mx.logging.LogEventLevel;
private function main():void
{
initLogging();
}
private function initLogging():void
{
var logTarget:TraceTarget = new TraceTarget();
var myLogger:ILogger = Log.getLogger("idv.gd.project.MyClass");
var myLogger2:ILogger = Log.getLogger("idv.gd.project.MyClass2");
logTarget.filters = ["idv.gd.project.*"];
//指定要聽 level
logTarget.level = LogEventLevel.ALL;
//開啟顯示資訊
logTarget.includeLevel = true;
logTarget.includeCategory = true;
logTarget.includeDate = true;
logTarget.includeTime = true;
//將Target加入Log
Log.addTarget(logTarget);
//logger送出訊息,由低至高,高層會顯示低層資訊(error: error & fatal)
myLogger.debug("myLogger debug");
myLogger.fatal("myLogger fatal");
myLogger2.info("myLogger2 init");
}
]]>
</mx:Script>
</mx:Application>
首先使用靜態方法取得ILogger,getLogger(Category),Category是用來過濾用,一般的命名原則同package,雖然亂取也可以但自己別搞混了,再來指定要顯示的LogTarget,預設是提供traceTarget,也可自己改寫,像是寫一個能記錄在文字檔或是回傳給伺服器的都行,接著給logTarget指定filter,filter用來過濾要聽的Category Name,預設為全都聽,可用*字元,比較特殊的是Logging會拆解格式,寫idv.gd.project.MyClass就只會聽到MyClass,而idv.gd.project.*則聽的到MyClass、MyClass2,另外,TraceTarget也可指定要顯示的資訊,包含Level、Date、Time、Category,指定完後記得加給Log
最後在要顯示資訊的地方用Logger指定Level即可,可設定要顯示的內容,時間Logging會自動加上