介紹一個Flex提供的Logging framework,這是原生的功能,API可在mx.logging下找到,用起來跟trace差不多,最大的不同是Logging有分成以下五層:
- DEBUG:紀錄Flex內部活動。這在應用程式除錯時最為有用
- INFO:紀錄一般資訊
- WARN:當應用程式遇到問題時紀錄訊息。這些問題不造成應用程式停止運作,但可能會導致近一步的錯誤
- ERROR:當重要的服務無法使用,或是限制應用程式的使用的狀況發生時加以紀錄
- 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會自動加上
很受用耶~~
阿咩
2009年5月12日 下午5:44