Classe SuperTrace

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.

La classe

/**
* 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;
	}
}

Utilisation

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;
 
Cette page est placée sous licence CC Attribution-Noncommercial-Share Alike 3.0 Unported
Si vous distribuez ou adaptez le contenu de cette page, merci d'en indiquer l'URL d'origine (celle qu'affiche a présent votre navigateur)
Contact Ressources Mediabox

Ces pages de ressources collaboratives Mediabox sont mises en ligne en utilisant Dokuwiki