[教學] Flex Logging Framework

介紹一個Flex提供的Logging framework,這是原生的功能,API可在mx.logging下找到,用起來跟trace差不多,最大的不同是Logging有分成以下五層:

  1. DEBUG:紀錄Flex內部活動。這在應用程式除錯時最為有用
  2. INFO:紀錄一般資訊
  3. WARN:當應用程式遇到問題時紀錄訊息。這些問題不造成應用程式停止運作,但可能會導致近一步的錯誤
  4. ERROR:當重要的服務無法使用,或是限制應用程式的使用的狀況發生時加以紀錄
  5. FATAL:當導致應用程式失敗的事件發生時加以記錄

愈高層的資訊愈完整,例如WARN就包含WARN、ERROR跟FATAL,而FATAL就只會顯示FATAL

程式範例

<?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會自動加上

1 意見 :: [教學] Flex Logging Framework

  1. 很受用耶~~