之前有介紹過Flex Logger跟ThunderBolt 這兩個Logging Framework,雖然Flex原生的就很好用,但Flex只提供trace Target,不像Thoundbolt有Firebug支援,為了開發方便,筆者寫了一個Flex Logger用的Firebug Target,有興趣可以參考
package idv.gd.utils.logging
{
import flash.external.ExternalInterface;
import flash.system.Capabilities;
import mx.core.mx_internal;
import mx.logging.LogEvent;
import mx.logging.LogEventLevel;
import mx.logging.targets.LineFormattedTarget;
use namespace mx_internal;
/**
* firebug專用 log target
* @author GD
*
*/
public class FirebugTarget extends LineFormattedTarget
{
private var formattedMessage:String;
public function FirebugTarget()
{
super();
}
/**
* 取得格式化後的lineFormatted message (內部method)
* @param message
*
*/
override mx_internal function internalLog(message:String):void
{
formattedMessage = message;
}
/**
* 送出訊息給Firebug
* @param event
*
*/
override public function logEvent(event:LogEvent):void
{
super.logEvent(event);
var message:String = formattedMessage;
if (ExternalInterface.available)
{
var level:int = event.level;
switch (level)
{
case LogEventLevel.DEBUG:
{
ExternalInterface.call("console.debug", message);
break;
}
case LogEventLevel.ERROR:
case LogEventLevel.FATAL:
{
ExternalInterface.call("console.error", message);
break;
}
case LogEventLevel.INFO:
{
ExternalInterface.call("console.info", message);
break;
}
case LogEventLevel.WARN:
{
ExternalInterface.call("console.warn", message);
break;
}
default:
{
ExternalInterface.call("console.log", message);
break;
}
}
}
//保留trace
trace(message);
}
0 意見 :: Flex Logger的Firebug target
張貼留言