PixLogger extension – Tracer vos messages

Savoir ce qui se passe lors de l’exécution de notre code est primordial tout au long de nos développements.
Par défaut, Adobe nous offre la fonction trace(); bien que très utile, elle peut vite nous sembler limitée lorsque nos applications prennent du volume. C’est pour cela, que Pixlib nous offre une API de logging plus évoluée.

Voyons concrètement comment cela fonctionne…

Un exemple simple

L’utilisation de l’API de logging se passe en deux temps :
1° il faut abonner à la classe PXLogManager le ou les consoles que nous souhaitons utiliser pour afficher les messages en sortie; ici la fenêtre de sortie fournie par Adobe;

import net.pixlib.log.*;
PXLogManager.getInstance().addLogListener(PXTraceLayout.getInstance());

Pour informations, cette sortie PXTraceLayout est directement disponible dans le core de Pixlib.

2° nous envoyons les messages qui seront dispatchés à l’ensemble des consoles abonnées.

PXLogManager.DEBUG("Happy");
PXLogManager.INFO("coding");
PXLogManager.WARN("with");
PXLogManager.ERROR("Pixlib");
PXLogManager.FATAL("!");

Comme vous pouvez le constater, il existe 5 méthodes statiques pour envoyer les informations, chacune d’elle va assigner un degré d’erreur au message. Ce qui permet de différentier l’importance que l’on doit accorder aux différents logs.

De plus, via la propriété PXLogManager.getInstance().level, cela permet de filtrer les messages à afficher durant la vie de l’application. Par exemple :

PxLogManager.getInstance().level = PXLogLevel.WARN;

On filtre les messages de niveaux supérieurs à PXLogLevel.WARN, c’est dire que ne seront affichés que les messages de niveau supérieur, c’est à dire WARN, ERROR et FATAL.

Chacun son canal d’émission

À l’image des fréquences radio, nous pouvons émettre et recevoir sur des canaux précis. Ce canal est défini par la classe PXEventChannel.

import net.pixlib.log.*;
import net.pixlib.events.PXEventChannel;
 
var myChannel : PXEventChannel = new PXEventChannel();
PXLogManager.getInstance().addLogListener(PXTraceLayout.getInstance(), myChannel);
 
PXLogManager.DEBUG("Happy", myChannel);
PXLogManager.INFO("coding");
PXLogManager.WARN("with");
PXLogManager.ERROR("Pixlib");
PXLogManager.FATAL("!");

Dans cet exemple, seul le message “Happy” sera affiché dans la fenêtre de sortie !
Remarques :

  • en interne, Pixlib utilise le canal : PXDebug.getInstance().channel;
  • si aucun canal n’est défini lors PXLogManager.getInstance().addLogListener(), l’ensemble des messages envoyés lui sera transmit.

A noter qu’une fois un canal de diffusion implémenter en respectant le contrat défini par l’interface PXLog, il est possible de directement utiliser ce canal pour diffuser les messages au bon endroit. Par exemple :

PXDebug.WARN("Hapy");
//ou
PXDebug.getInstance().warn("Happy");

Savoir d’où vient le message

Recevoir un message, c’est bien, savoir d’où il vient c’est mieux !

Pour cela, les méthodes de logs contiennent un 3e argument qui permet de définir l’origine du message.

PXLogManager.DEBUG("Happy", null, this);

PixLogger, un ensemble de Layout

Pour s’interfacer avec les différentes consoles, Pixlib passe par des « layouts »; chaque console à son layout.
Seul PXTraceLayout, layout gérant la fenêtre de sortie d’Adobe, est fourni dans le core de Pixlib. Pour retrouver les autres layouts disponibles, il faut passer par l’extension PixLogger qui gère les consoles suivant :

  • De MonsterDebugger, via PXDeMonsterDebuggerLayout;
  • SOSmax – Socket Output Server, via PXSosMaxLayout;
  • Firebug – plugin de FireFox, via PXFirebugLayout;
  • L’écriture dans un fichier texte local (uniquement pour les projets AIR), via PXFileLayout;
  • AirLogger, via PXAirLoggerLayout;
  • LuminicBox, via PXLuminicBoxLayout;

À noter que PXDeMonsterDebuggerLayout a besoin de la classe client fournie avec De MonsterDebugger pour pouvoir fonctionner. Un snapshoot de cette classe  (basique) est embarquée dans l’extension par défaut.

PXDeMonsterDebuggerLayout.CLIENT = MonsterDebugger;
PXLogManager.getInstance().addLogListener(PXDeMonsterDebuggerLayout.getInstance());

L’extension PixLogger est disponible sur la page des téléchargements, les sources sur le SVN et la documentation ici.

Happy coding with Pixlib !

This entry was posted in Extension, Framework, Tutorial and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">