Flex日志使用及配置

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:51   1868   0

Flex集成一个Log框架,可以完成很多用trace()做debug时完成不了的功能输 出log时可以实现分等级(共5+1级),用过滤器指定输出的类,以及输出方式(默认为 trace)。
需要用到的类如下



TraceTarget:继承AbstractTarget,该类提供使用全局trace()方法输出日志消息的记录程序目标。

Log:主类,有几个静态方法,添加/移除 TraceTarget和获取ILogger。

LogEventLevel:定义了log等级的常量。

Log等级说明:5级 和 All

分别是ALL(0) DEBUG(2) INFO(4) WARN(6) ERROR(8) FATAL(1000)
每 个等级在输出时都包含了自身及后续等级的信息,即当把等级设定为INFO时,INFO WARN ERROR FATAL中的信息都会被输出,而排在INFO前面的DEBUG则不会被输出

example :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
                layout="absolute" 
                width="100%" 
                height="100%" 
                creationComplete="init()">
    <mx:Script>
        <![CDATA[
         import com.commons.STraceTarget;
            import mx.logging.Log;
            import mx.logging.LogEventLevel;
            import mx.logging.LogLogger;
            
            private var logger:LogLogger
            
            private function init():void
            {
                var logTarget:STraceTarget;
                logTarget = new STraceTarget(); //继承TraceTarget
                logTarget.filters = ["com.*"];
                logTarget.level = LogEventLevel.ALL;
                logTarget.includeCategory = true; //输出信息是否包含class名
                logTarget.includeLevel = true; //输出信息是否包含等级
                logTarget.includeDate = false; //输出信息是否包含日期
                logTarget.includeTime = false; //输出信息是否包含时间
                logger = Log.getLogger("Test") as LogLogger; //此处getLogger参数只是作为标志位使用,如果此处写为 com.Test(com包下面并没有Test类)也可以输出日志信息,详细可参考getLogger方法
                //logTarget.addLogger(logger); //使用指定的记录程序设置此目标
                Log.addTarget(logTarget); //允许指定的目标开始接收日志事件的通知。
            }
            private function logMessage():void
            {
                logger.debug(":debug......");
                logger.info(":info......");
                logger.error(":error......");
            }
        ]]>
    </mx:Script>
    <mx:Button label="add Message" click="logMessage()" />
    
</mx:Application>

此处STraceTarget继承TraceTarget:

package com.commons
{
 import mx.controls.Alert;
 import mx.core.mx_internal;
 import mx.logging.targets.TraceTarget;
 
 
 use namespace mx_internal;
 
 public class STraceTarget extends TraceTarget
 {
  public function STraceTarget()
  {
   super();
  }
  
  /**
   * 由该方法输出日志,可以重写此方法以实现将日志写入服务器(需要服务支持),或者将日志写入本地
   */
  override mx_internal function internalLog(message:String):void
  {
   Alert.show(message);
  }
 }
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP