com.neolao.LogManager

Gestion des logs.

Classes recquises:

Exemple

// Paramètre généraux
LogManager.level = 3; // Le niveau d'affichage des logs
LogManager.time = true; // Affiche l'heure pour les prochains logs
LogManager.ms = true; // Utilise des millisecondes pour les prochains logs
LogManager.enabled = false; // Désactive les logs, plus aucun log n'est enregistré
LogManager.enabledAll = true; // Active tous les logs des instances
trace(LogManager.all); // Affiche les logs en html attention, c'est pour de l'affichage en textField, au pire, en utilisant .htmlText = .text ca enlève la coloration
 
// Log général
LogManager.generalInfo = "coucou"; // Le niveau par défaut est 1
LogManager.setGeneralInfo("coucou", 3); // Une info générale de niveau 3
 
// Pour une instance
mesLogs = new LogManager("monNom");
mesLogs.action = "Attention, ca va chauffer !";
mesLogs.enabledLocal = false; // Désactive les logs de l'instance, plus aucun log n'est enregistré
 
// * SPECIAL *
// * On peut taper "neologs" pour afficher les logs. Même manipulation pour le cacher
// * Niveau 1 : Important
// * Niveau 2 : Normal
// * Niveau 3 : Bas

Constructeur

Initialisation

  • pName:String Defini un identifiant d'instance du LogManager

Propriétés

Visibilité Type Nom Status Description
static public Boolean include lecture seule init du LogManager
static public String cars Enchainement de caractères pour afficher les logs
static public Number level Niveau de log
static public Boolean enabledAll Indique si les logs doivent continuer à être entregistrés pour toutes les instances
static public Boolean enabled Indique si les logs doivent continuer à être entregistrés dans le général
static public Boolean ms Défini si le temps affiché est en millisecondes
static public Boolean time Défini si le temps doit être affiché
static public String all Lecture seule Retourne tous les logs
static public String generalInfo Ecriture seule Enregistre une info générale dans les logs
static public String generalAction Ecriture seule Enregistre une action générale dans les logs
static public String generalError Ecriture seule Enregistre une erreur générale dans les logs
public String name Défini un identifiant à l'instance du LogManager
public String info Ecriture seule Enregistre une info dans les logs de l'instance
public String action Ecriture seule Enregistre une action dans les logs de l'instance
public String error Ecriture seule Enregistre une erreur dans les logs de l'instance

Méthodes

Visibilité Return Nom Param 1 Param 2 Description
public Void setInfo pMessage:String pLevel:Number Enregistre une info dans les logs
public Void setAction pMessage:String pLevel:Number Enregistre une action dans les logs
public Void setError pMessage:String pLevel:Number Enregistre une erreur dans les logs
static public Void setGeneralInfo pMessage:String pLevel:Number Enregistre une info générale dans les logs
static public Void setGeneralAction pMessage:String pLevel:Number Enregistre une action générale dans les logs
static public Void setGeneralError pMessage:String pLevel:Number Enregistre une erreur générale dans les logs
static public Void showLogs Visualisation des logs sur un textField créé dynamiquement

Change log

[22/10/2004]

Un ptit check up !

[06/01/2005] Version 1.4

Ajout des propriétés :

  1. enabled
  2. enabledLocal

[09/03/2005] Version 1.5

Ajout du système de visualisation des logs

  1. showLogs
  2. get include

Ajout des niveaux de logs ⇒ Ca permet le debug à plusieurs niveaux

[14/03/2005] Version 1.6

Ajout des propriétés static :

  1. level

[23/03/2005] Version 1.7

Maintenant, il y a différentes couleurs pour les levels de log

Source

import com.neolao.data.NumberUtils;
import com.neolao.data.TimeUtils;
/**
 * Gestion des logs
 * @author 			neolao <neo@neolao.com>
 * @version 		1.7 (23/03/2005)
 * @link			http://resources.neolao.com/flash/classes/LogManager
 * @license			http://creativecommons.org/licenses/by-sa/2.0/	
 */
class com.neolao.LogManager{
	public static var className:String = "LogManager";
	public static var version:String = "1.7";
 
	// ----------------------------- CONSTANTES --------------------------------
	/**
	 * La représentation d'une erreure
	 */
	private static var CONST_ERROR:String =  "[ERR] ";
	private static var CONST_ERROR_CLASS:String =  "error";
	private static var CONST_ERROR_COLOR1:String =  "#FF0000";
	private static var CONST_ERROR_COLOR2:String =  "#FF5555";
	private static var CONST_ERROR_COLOR3:String =  "#FF9999";
	/**
	 * La représentation d'une action
	 */
	private static var CONST_ACTION:String = "[ACT] ";
	private static var CONST_ACTION_CLASS:String = "action";
	private static var CONST_ACTION_COLOR1:String = "#000000";
	private static var CONST_ACTION_COLOR2:String = "#555555";
	private static var CONST_ACTION_COLOR3:String = "#999999";
	/**
	 * La représentation d'une information
	 */
	private static var CONST_INFO:String =   "[INF] ";
	private static var CONST_INFO_CLASS:String =   "info";
	private static var CONST_INFO_COLOR1:String =   "#0000FF";
	private static var CONST_INFO_COLOR2:String =   "#5555FF";
	private static var CONST_INFO_COLOR3:String =   "#9999FF";
	/**
	 * La chaine à taper pour afficher les logs
	 */
	public static var COMBO:String = "NEOLOGS";
	// ----------------------------- VARIABLES ---------------------------------
	/**
	 * La chaine qui contient la totalité des logs
	 */
	private static var _all:String = "";
	/**
	 * Indique s'il faut afficher le temps
	 */
	private static var _time:Boolean = false;
	/**
	 * Indique s'il faut utiliser des millisecondes pour le temps
	 */
	private static var _milliseconde:Boolean = false;
	/**
	 * Indique si les logs doivent continuer à être entregistrés
	 */
	private static var _enabled:Boolean = true;
	/**
	 * Indique si les logs des instances doivent continuer à être entregistrés
	 */
	private static var _enabledAll:Boolean = false;
	/**
	 * Ecouteur de touche, pour le système de visualisation des logs
	 */
	private static var _listenerKey:Object;
	/**
	 * Enchainement de caractères pour afficher les logs
	 */
	public static var cars:String;
	/**
	 * La liste des instances de logs
	 */
	private static var _logInstance:Array = new Array();
	/**
	 * Le niveau de log à afficher
	 */
	private static var _level:Number = 1;
	/**
	 * La chaine qui contient les logs de l'instance du LogManager
	 */
	private var _log:String;
	/**
	 * L'identifiant de l'instance du LogManager
	 */
	private var _name:String;
	/**
	 * Indique si les logs doivent continuer à être entregistrés
	 */
	private var _enabledLocal:Boolean;
 
	// ----------------------------- EVENEMENTS --------------------------------
 
	/*============================= CONSTRUCTEUR =============================*/
	/*========================================================================*/
	/**
	 * Initialisation de l'instance LogManager
	 * @param pName Defini un identifiant d'instance du LogManager
	 */
	public function LogManager(pName:String){
		_log = "";
		name = pName || "";
		_enabledLocal = _enabledAll;
		_logInstance.push(this);
	}
	/*======================= FIN = CONSTRUCTEUR = FIN =======================*/
	/*========================================================================*/
 
	/*=========================== METHODES PRIVEES ===========================*/
	/*========================================================================*/
	/**
	 * Enregistre un message dans les logs de l'instance
	 * @param pMessage Le message à enregistrer
	 * @param pType Le type du message
	 * @param pLevel Le level du message
	 */
	private function setMessage(pMessage:String, pType:String, pLevel:Number){
		var o = LogManager.include;
		if(_enabledLocal && (!pLevel || pLevel <= _level)){
			_log += getColor(pType, pLevel);
			if(pType == "error") _log += "<b>";
			_log += getTime();
			_log += getType(pType) + pMessage;
			if(pType == "error") _log += "</b>";
			_log += "</font><br/>\n";
			setGeneralMessage(_name + pMessage, pType, pLevel);
		}
	}
	// ------------------------------- STATIC ----------------------------------
	/**
	 * Récupère la représentation du type du message
	 * @param pType Le type du message
	 * @return La représentation du type du message
	 */
	private static function getType(pType:String):String{
		return LogManager["CONST_" + pType.toUpperCase()];
	}
	/**
	 * Récupère la couleur du type du message
	 * @param pType Le type du message
	 * @return La couleur du type du message
	 */
	private static function getColor(pType:String, pLevel:Number):String{
		return "<font face=\"Courier New\" color=\"" + LogManager["CONST_" + pType.toUpperCase() + "_COLOR" + pLevel] + "\">";
	}
	/**
	 * Enregistre un message dans les logs
	 * @param pMessage Le message à enregistrer
	 * @param pType Le type du message
	 * @param pLevel Le level du message
	 */
	private static function setGeneralMessage(pMessage:String, pType:String, pLevel:Number){
		var o = LogManager.include;
		if(_enabled && (!pLevel || pLevel <= _level)){
			_all += getColor(pType, pLevel);
			if(pType == "error") _all += "<b>";
			_all += getTime();
			_all += getType(pType) + pMessage;
			if(pType == "error") _all += "</b>";
			_all += "</font><br/>\n";
		}
	}
	/**
	 * Pour bien écrire le texte des boutons
	 * @param pLabel Le label du bouton
	 * @return Le format html du label du bouton
	 */
	public static function formatGeneralButtonText(pLabel:String):String{
		return "<p align=\"center\"><font face=\"Verdana\">" + pLabel + "</font></p>";
	}
	/**
	 * Génération de bouton pour la visualisation des logs
	 * @param pTarget La cible, où va être le bouton
	 * @param pName Le nom du bouton
	 * @param pOnRelease La fonction appelé lorsque l'on clique sur le bouton
	 * @return L'instance du bouton
	 */
	private static function generateButton(pTarget:MovieClip, pName:String, pOnRelease:Function):MovieClip{
		var vTmp:MovieClip;
 
		vTmp = pTarget.createEmptyMovieClip(pName+"_btn", pTarget.getNextHighestDepth());
		vTmp.lineStyle(0, 0x666666, 100);
		vTmp.beginFill(0xCCCCCC, 100);
		vTmp.lineTo(80, 0);
		vTmp.lineTo(80, 16);
		vTmp.lineTo(0, 16);
		vTmp.lineTo(0, 0);
		vTmp.endFill();
		vTmp.createTextField("titre_txt", vTmp.getNextHighestDepth(), 0, 0, 80, 16);
		vTmp.titre_txt.selectable = false;
		vTmp.titre_txt.html = true;
		vTmp.titre_txt.htmlText = formatGeneralButtonText(pName);
		vTmp.onRelease = pOnRelease;
 
		return vTmp;
	}
	/*===================== FIN = METHODES PRIVEES = FIN =====================*/
	/*========================================================================*/
 
	/*============================ GETTER  SETTER ============================*/
	/*========================================================================*/
	/**
	 * Défini un identifiant à l'instance du LogManager
	 */
	public function set name(pNom:String){
		_name = "[" + pNom + "] ";
	}
	public function get name():String{
		return _name;
	}
	/**
	 * Enregistre une erreur dans les logs de l'instance
	 */
	public function set error(pMessage:String){
		setMessage(pMessage, "error", 1);
	}
	/**
	 * Enregistre une action dans les logs de l'instance
	 */
	public function set action(pMessage:String){
		setMessage(pMessage, "action", 1);
	}
	/**
	 * Enregistre une info dans les logs de l'instance
	 */
	public function set info(pMessage:String){
		setMessage(pMessage, "info", 1);
	}
	/**
	 * Indique si les logs doivent continuer à être entregistrés
	 */
	public function get enabledLocal():Boolean {
		return _enabledLocal;
	}
	public function set enabledLocal(pBoule:Boolean){
		_enabledLocal = pBoule;
	}
	/**
	 * Retourne les logs de l'instance si on le cast en String
	 * @return Les logs
	 */
	public function toString():String {
		return _log;
	}
	// ------------------------------- STATIC ----------------------------------
	/**
	 * Enregistre une erreur générale dans les logs
	 */
	public static function set generalError(pMessage:String){
		setGeneralMessage(pMessage, "error", 1);
	}
	/**
	 * Enregistre une action générale dans les logs
	 */
	public static function set generalAction(pMessage:String){
		setGeneralMessage(pMessage, "action", 1);
	}
	/**
	 * Enregistre une info générale dans les logs
	 */
	public static function set generalInfo(pMessage:String){
		setGeneralMessage(pMessage, "info", 1);
	}
	/**
	 * Retourne le temps depuis le début de l'animation.
	 */
	public static function getTime():String {
		if(_time){
			return (_milliseconde)?"[" + NumberUtils.nChar(getTimer(), 8, false) + "]":"[" + TimeUtils.milli2time(getTimer()) + "]";
		}else{
			return "";
		}
	}
	/**
	 * Retourne tous les logs. ReadOnly
	 */
	public static function get all():String {
		var out:String = "";
		out += "--------------- LOGS -----\n";
		out += _all;
		out += "--------------- LOGS FIN -\n";
 
		return out;
	}
	/**
	 * Défini si le temps doit être affiche	 
	 */
	public static function get time():Boolean {
		return _time;
	}
	public static function set time(pBoule:Boolean){
		_time = pBoule;
	}
	/**
	 * Défini si le temps affiché est en millisecondes
	 */
	public static function get ms():Boolean {
		return _milliseconde;
	}
	public static function set ms(pBoule:Boolean){
		_milliseconde = pBoule;
	}
	/**
	 * Indique si les logs doivent continuer à être entregistrés dans le général
	 */
	public static function get enabled():Boolean {
		return _enabled;
	}
	public static function set enabled(pBoule:Boolean){
		_enabled = pBoule;
	}
	/**
	 * Indique si les logs doivent continuer à être entregistrés pour toutes les instances
	 */
	public static function set enabledAll(pBoule:Boolean){
		for(var i=0; i<_logInstance.length; i++){
			_logInstance[i].enabledLocal = pBoule;
		}
		_enabledAll = pBoule;
	}
	public static function get enabledAll():Boolean{
		return _enabledAll;
	}
	/**
	 * init du LogManager
	 */
	public static function get include():Boolean{
		if(!_listenerKey){
			_listenerKey = new Object();
 
			_listenerKey.onKeyDown = function(){
				LogManager.cars += String.fromCharCode(Key.getCode());
 
				if(LogManager.COMBO.indexOf(LogManager.cars) != 0){
					LogManager.cars = "";
				}else{
					if(LogManager.cars == LogManager.COMBO){
						LogManager.showLogs();
						LogManager.cars = "";
					}
				}
			}
			Key.addListener(_listenerKey);
			return true;
		}else{
			return false;
		}
	}
	/**
	 * Niveau de log 
	 */
	public static function get level():Number{
		return _level;
	}
	public static function set level(pLevel:Number){
		_level = pLevel;
	}
	/*====================== FIN = GETTER  SETTER = FIN ======================*/
	/*========================================================================*/
 
	/*========================== METHODES PUBLIQUES ==========================*/
	/*========================================================================*/
	/**
	 * Enregistre une erreur dans les logs
	 */
	public function setError(pMessage:String, pLevel:Number){
		setMessage(pMessage, "error", pLevel);
	}
	/**
	 * Enregistre une action dans les logs
	 */
	public function setAction(pMessage:String, pLevel:Number){
		setMessage(pMessage, "action", pLevel);
	}
	/**
	 * Enregistre une info dans les logs
	 */
	public function setInfo(pMessage:String, pLevel:Number){
		setMessage(pMessage, "info", pLevel);
	}
	// ------------------------------- STATIC ----------------------------------
	/**
	 * Enregistre une erreur générale dans les logs
	 */
	public static function setGeneralError(pMessage:String, pLevel:Number){
		setGeneralMessage(pMessage, "error", pLevel);
	}
	/**
	 * Enregistre une action générale dans les logs
	 */
	public static function setGeneralAction(pMessage:String, pLevel:Number){
		setGeneralMessage(pMessage, "action", pLevel);
	}
	/**
	 * Enregistre une info générale dans les logs
	 */
	public static function setGeneralInfo(pMessage:String, pLevel:Number){
		setGeneralMessage(pMessage, "info", pLevel);
	}
	/**
	 * Visualisation des logs sur un textField créé dynamiquement
	 */
	public static function showLogs(){
		var vInstance:MovieClip;
		var vOptions:MovieClip;
		var vTmp:MovieClip;
 
		// Création du movieClip
		if(_root.__neolaoLogManager.getDepth() == undefined){
			// movieClip
		vInstance = _root.createEmptyMovieClip("__neolaoLogManager", _root.getNextHighestDepth());
 
			// textField
			vInstance.createTextField("logs_txt", vInstance.getNextHighestDepth(), 5, 5, Stage.width - 10, Stage.height - 10 - 50);
			vInstance.logs_txt.background = true;
			vInstance.logs_txt.html = true;
			vInstance.logs_txt.border = true;
			vInstance.logs_txt.multiline = true;
			vInstance.logs_txt.htmlText = all;
 
			// optionsBack
			vTmp = vInstance.createEmptyMovieClip("optionsBack_mc", vInstance.getNextHighestDepth());
			vTmp._x = 5;
			vTmp._y = Stage.height - 50;
			vTmp.lineStyle(0, 0x000000, 100);
			vTmp.beginFill(0x999999, 100);
			vTmp.lineTo(Stage.width - 10, 0);
			vTmp.lineTo(Stage.width - 10, 45);
			vTmp.lineTo(0, 45);
			vTmp.lineTo(0, 0);
			vTmp.endFill();
 
			// options
			vOptions = vInstance.createEmptyMovieClip("options_mc", vInstance.getNextHighestDepth());
			vOptions._x = 5;
			vOptions._y = Stage.height - 50;
 
			// option enabled
			vTmp = generateButton(vOptions, (_enabled)?"enabled":"disabled", function(){
				var t = this;
				if(t.titre_txt.text == "enabled"){
					t.titre_txt.htmlText = LogManager.formatGeneralButtonText("disabled");
					LogManager.enabled = false;
				}else{
					t.titre_txt.htmlText = LogManager.formatGeneralButtonText("enabled");
					LogManager.enabled = true;
				}
			});
			vTmp._x = 5;
			vTmp._y = 5;
 
			// option enabledAll
			vTmp = generateButton(vOptions, (_enabledAll)?"enabledAll":"disabledAll", function(){
				var t = this;
				if(t.titre_txt.text == "enabledAll"){
					t.titre_txt.htmlText = LogManager.formatGeneralButtonText("disabledAll");
					LogManager.enabledAll = false;
				}else{
					t.titre_txt.htmlText = LogManager.formatGeneralButtonText("enabledAll");
					LogManager.enabledAll = true;
				}
			});
			vTmp._x = 5;
			vTmp._y = 25;
 
			// option refresh
			vTmp = generateButton(vOptions, "refresh", function(){
				_root.__neolaoLogManager.logs_txt.htmlText = LogManager.all;
			});
			vTmp._x = 100;
			vTmp._y = 5;
 
			// option level
			vTmp = generateButton(vOptions, "level "+_level, function(){
				var t = this;
				if(t.titre_txt.text == "level 1"){
					t.titre_txt.htmlText = LogManager.formatGeneralButtonText("level 2");
					LogManager.level = 2;
				}else if(t.titre_txt.text == "level 2"){
					t.titre_txt.htmlText = LogManager.formatGeneralButtonText("level 3");
					LogManager.level = 3;
				}else{
					t.titre_txt.htmlText = LogManager.formatGeneralButtonText("level 1");
					LogManager.level = 1;
				}
			});
			vTmp._x = 100;
			vTmp._y = 25;
 
		}else if(!_root.__neolaoLogManager._visible){
			_root.__neolaoLogManager._visible = true;
			_root.__neolaoLogManager.swapDepths(_root.getNextHighestDepth());
 
			// logs
			_root.__neolaoLogManager.logs_txt._width = Stage.width - 10;
			_root.__neolaoLogManager.logs_txt._height = Stage.height - 10 - 50;
			_root.__neolaoLogManager.logs_txt.htmlText = all;
 
			// optionsBack
			_root.__neolaoLogManager.optionsBack_mc._width = Stage.width - 10;
			_root.__neolaoLogManager.optionsBack_mc._y = Stage.height - 50;
 
			// optionsBack
			_root.__neolaoLogManager.options_mc._y = Stage.height - 50;
		}else{
			_root.__neolaoLogManager.logs_txt.htmlText = "";
			_root.__neolaoLogManager._visible = false;
		}
 
	}
	/*==================== FIN = METHODES PUBLIQUES = FIN ====================*/
	/*========================================================================*/
}