📄 xraylogger.as.svn-base
字号:
package com.blitzagency.xray.logger
{
import flash.events.EventDispatcher;
import com.blitzagency.xray.logger.Debug;
import com.blitzagency.xray.logger.Logger;
import com.blitzagency.xray.logger.Log;
import com.blitzagency.xray.logger.util.PropertyTools;
import com.blitzagency.xray.logger.util.ObjectTools;
import flash.utils.*;
import flash.events.KeyboardEvent;
/**
* @author John Grden
*/
public class XrayLogger extends EventDispatcher implements Logger
{
public static var DEBUG:Number = 0;
public static var INFO:Number = 1;
public static var WARN:Number = 2;
public static var ERROR:Number = 3;
public static var FATAL:Number = 4;
public static var NONE:Number = 5;
public static function resolveLevelAsName(p_level:Number):String
{
switch(p_level)
{
case 0:
return "debug";
break;
case 1:
return "info";
break;
case 2:
return "warn";
break;
case 3:
return "error";
break;
case 4:
return "fatal";
break;
default:
return "debug";
}
}
private static var _instance:XrayLogger = null;
private var level:Number = 0; // set to DEBUG by default
private var displayObjectRecursionDepth:Number = 3;
private var objectRecursionDepth:Number = 254;
private var indentation:Number = 0;
private var filters:Array = [];
public static function getInstance():XrayLogger
{
if(_instance == null)
{
_instance = new XrayLogger();
}
return _instance;
}
public function setDisplayClipRecursionDepth(p_recursionDepth:Number):void
{
displayObjectRecursionDepth = p_recursionDepth;
}
public function setObjectRecursionDepth(p_recursionDepth:Number):void
{
objectRecursionDepth = p_recursionDepth;
}
public function setIndentation(p_indentation:Number = 0):void
{
indentation = p_indentation;
}
public function setLevel(p_level:Number = 0):void
{
level = p_level;
}
public function setFilters(p_filters:Array):void
{
filters = p_filters;
}
public function debug(obj:Log):void
{
if(obj.getLevel() == level)
{
log(obj.getMessage(), obj.getCaller(), obj.getClassPackage(), 0, obj.getDump());
}
}
public function info(obj:Log):void
{
if(obj.getLevel() >= level)
{
log(obj.getMessage(), obj.getCaller(), obj.getClassPackage(), 1, obj.getDump());
}
}
public function warn(obj:Log):void
{
if(obj.getLevel() >= level)
{
log(obj.getMessage(), obj.getCaller(), obj.getClassPackage(), 2, obj.getDump());
}
}
public function error(obj:Log):void
{
if(obj.getLevel() >= level)
{
log(obj.getMessage(), obj.getCaller(), obj.getClassPackage(), 3, obj.getDump());
}
}
public function fatal(obj:Log):void
{
if(obj.getLevel() >= level)
{
log(obj.getMessage(), obj.getCaller(), obj.getClassPackage(), 4, obj.getDump());
}
}
/**
* Logs the {@code message} using the {@code Debug.trace} method if
* {@code traceObject} is turned off or if the {@code message} is of type
* {@code "string"}, {@code "number"}, {@code "boolean"}, {@code "undefined"} or
* {@code "null"} and using the {@code Debug.traceObject} method if neither of the
* above cases holds {@code true}.
*
* @param message the message to log
*/
public function log(message:String, caller:String, classPackage:String, level:Number, dump:Object=null):void
{
// add time stamp
var traceMessage:String = "(" + getTimer() + ") ";
if(classPackage.length > 0) traceMessage += caller + "\n";
traceMessage += message;
if(message.length > 0) Debug.trace(traceMessage, classPackage, level);
if(dump == null) return;
// check to see if dump is an object or not
var type:String = typeof(dump);
if (type == "string" || type == "number" || type == "boolean" || type == "undefined" || type == "null")
{
Debug.trace(dump, classPackage, level);
}else if(type == "xml")
{
Debug.trace(dump.toString(), classPackage, level);
}else
{
var objType:String = ObjectTools.getImmediateClassPath(dump);
if(objType == "Object" || objType == "Object.Array")
{
// regular object types like Objects and Arrays can go straight to Debug
Debug.traceObject(dump, objectRecursionDepth, indentation, classPackage, level);
}else
{
// if we have something like a sprite/movieclip/component etc, we'll get it's props first, then send to Debug
var obj:Object = PropertyTools.getProperties(dump);
Debug.traceObject(obj, displayObjectRecursionDepth, indentation, classPackage, level);
}
}
}
public function checkFilters():Boolean
{
if(filters.length == 0) return true;
for(var i:uint=0;i<filters.length;i++)
{
}
return true;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -