Classe inspirée par un mail de Kevin Luck sur OSFlash. Cette classe permet de remplacer le trace pour une compilation sous MTASC (paramère -trace) et de fournir une sortie de façon aisée pour FlashInspector.
Un plug-in (publisher) est également disponible afin de permettre une sortie vers SOSPowerFlasher.
/** * class SuperTrace * @author Bebrone Stéphane (infos at shaoken.be) * @version 1.0.0.1 * @url http://weblog.shaoken.be * * Cette class donne accès à des fonctions supplémentaires du trace * * - Le résultat des trace disponibles en dehors de l'IDE * - Parcourt automatiquement vos objets complexes (tableau, objet...) * - Différentes importances de traces * * !! IMPORTANT !! * * - Vous devez posséder le package de LuminicBox. * En réalité cette class sert de décorateur au composant de * LuminicBox. * * RELEASE NOTE: * - 1.0: * ° Création * - 1.1: * ° Utilisation de la config par défaut de LuminicBox * ° Amélioration du rendu de sortie pour une compilation MTASC. * ° Ajout d'une option VIEWSOURCEINFO (compilation MTASC nécessaire) * ° Ajout d'un niveau de contrôle. * * THANKS TO * http://kelvinluck.com/ for original idea */ import LuminicBox.Log.Logger; import LuminicBox.Log.IPublisher; class be.shaoken.utils.SuperTrace { // copyright infos public static var className:String= "SuperTrace" ; public static var classPackage:String= "be.shao.utils"; public static var version:String= "1.0.0.1"; public static var author:String= "Shaoken"; public static var link:String= "http://weblog.shaoken.be" ; private static var _oLog:Logger; private static var _bHasInitiliazed:Boolean; public static var VIEWSOURCEINFO:Boolean = true; /** * Constructeur */ function SuperTrace() {} //------------------------------------------------------------------------------- // Public methods //------------------------------------------------------------------------------- /** * Initialise l'instance (à n'utiliser qu'une fois) */ public static function initialize (sId:String) : Void { if(_bHasInitiliazed) return; _oLog = LuminicBox.Log.DefaultConfig.getLogger(sId); // le composant est initialisé _bHasInitiliazed = true; } /** * Utilisez cette méthode pour suplanter la fonction trace */ public static function trace (message:Object, severity:String) : Void { severity = _checkLevel(severity); _oLog[severity].apply(_oLog, [message]); } /** * Fonction de remplacement pour le parametre -trace de MTASC */ public static function traceReplacer (message:Object, level:String, className: String, fileName:String, lineNumber: Number) : Void { // check if we have a security level var sHeader:String; if(arguments.length == 5) sHeader = "Source: " +className + "["+ lineNumber + "]"; else sHeader = "Source: "+level + "[" + fileName + "] :"; // check if a level had been specified if (VIEWSOURCEINFO) SuperTrace.trace(sHeader, level); SuperTrace.trace(message, level); } /** * Utilisez cette méthode pour ajouter un module de sortie */ public static function addPublisher (o:IPublisher) : Void { _oLog.addPublisher(o); } /** * Retourne le nom de class lorsque trace une de ses instances */ public function toString () : String { return "[Object ::: SuperTrace]"; } //------------------------------------------------------------------------------- // Private methods //------------------------------------------------------------------------------- /** * Vérifie le niveau de sécurité précisé */ private static function _checkLevel (s:String) : String { var sReturn:String; switch(s) { case "info": case "warn": case "error": case "fatal": sReturn = s; break; default: sReturn = "debug"; } return sReturn; } }
Avant toute chose, il faut initiliaser l'objet (à faire une seule et une seule fois par application)
import be.shaoken.utils.SuperTrace; SuperTrace.initialize("nom_de_votre_application");
Ensuite, si vous compilez depuis l'IDE de Macromedia il est recommandé d'utiliser la méthode trace du SuperTrace comme ceci:
SuperTrace.trace("Hello World", "warn");
Pour une compilation sous MTASC, veuillez renseigner cette fonction pour le paramètre trace:
be.shaoken.utils.SuperTrace.traceReplacer
Ensuite, il ne vous reste plus qu'a utiliser le mot-clé TRACE dans votre code (attention une initialisation du SuperTrace dans le code est toujours nécessaire).
TRACE("Hello World", "debug");
Pour une compilation sous MTASC, vous pouvez choisir d'afficher ou non les métas-données (ligne du trace, fichier source…) en renseignant le paramètre VIEWSOURCEINFO.
SuperTrace.VIEWSOURCEINFO = true;