Le trace, ca lasse…
Après une longue et pénible étude de cas portant sur plus de 10 000 applications scrupuleusement sélectionnées, mes conclusions sont formelles :
La fonction trace() de flash n'est décidément pas très pratique et reste surtout globalement inutilisable en ligne.
Depuis longtemps les hommes de toutes nationalités se sont unis dans un effort commun pour offrir aux créateurs de web que nous sommes des alternatives toutes plus séduisantes les unes que les autres pour remplacer cette fonction trace une bonne fois pour toutes.
On peut citer par exemple le Flash Inspector, aujourd'hui devenu pratiquement introuvable, même sur eBay :
http://www.luminicbox.com/blog/
le désormais célèbre Air Logger de Abe, gérant le debug multi flash et plein d'autres trucs cools :
http://code.google.com/p/airlogger/
Ou encore le fabuleux Monster Debugguer, qui n'en peut plus de repousser les limites du debug de feignasse.
http://www.demonsterdebugger.com/
Chaque outil dispose de son mode de dialogue propre et implique l'inclusion de dépendances spécifiques à nos projets.
Certaines méta librairies proposent depuis longtemps des solutions de dialogue avec ces applications pour faciliter la tâche des collègues :
C'est le cas par exemple de Lowra ou de la grandissante librairie de Skitoo.
Les solutions proposées sont complètes, proposant par exemple un système avancé de filtrage des messages, une configuration via du XML et plein d'autres trucs déments.
Toujours dans mon souci de faire comme les autres mais en moins bien, voici une présentation du package net.babeuf.logger dont le but assumé est de proposer l'approche la plus minimaliste possible du trace en ligne en terme de code à insérer dans son projet. J'ai donc délibérément supprimé toute instanciation, initialisation ou autre paramétrages pour ne garder que quelques méthodes statiques :
-log
-debug
-info
-warn
-error
-fatal ( bouh )
et un booléen enabled pour activer désactiver le tout.
toutes ces méthodes ont le même prototype
A savoir : le message, sous n'importe quelle forme ( string, number, XML, Object, Array, etc ) et en optionnel une référence vers l'object appelent le trace ( le plus souvent this ou rien du tout) pour s'y retrouver à l'affichage.
A chaque sortie possible correspond une classe présentant ces méthodes statiques à l'application.
net.babeuf.logger.AirLogger -> sortie dans le Air Logger
net.babeuf.logger.Firebug -> sortie dans la console de Firebug
net.babeuf.logger.FlashInspector -> sortie dans le Flash Inspector
net.babeuf.logger.JSAlert -> sortie dans des alertes Javascript
net.babeuf.logger.PopLogger -> sortie dans une popup html
net.babeuf.logger.EveryWhereLogger -> sortie partout en meme temps ( avec un partout paramétrable ) + le trace originel
Gros plan sur le PopLogger seule exclusivité de ce package puisqu'il permet à un flash intégré dans une page HTML d'envoyer des messages vers une popup HTML qui s'ouvre automatiquement.
Aucune inclusion de javascript n'est nécessaire.
dans le flash, et c'est tout !

Bien sur, les popups ne doivent pas être bloquées sur votre navigateur sinon, c'est raté.
Le EveryWhereLogger permet quant à lui de cumuler tous les logger en même temps sans réfléchir, ce qui fait du bien une fois de temps en temps dans une dure journée de labeur.
par défaut, toutes les sources sont actives à l'exception du JSAlert, bien lourd à la longue et du PopLogger, qui ne fait pas bien dans une démo client.
Chaque sortie est activable/Désactivable séparément si besoin :
EveryWhereLogger.flashInspectorEnabled = true ;
EveryWhereLogger.airloggerEnabled = true ;
EveryWhereLogger.alertEnabled = true ;
EveryWhereLogger.popEnabled = true ;
Pour ceux qui n'ont pas encore totalement décroché, une petite démo récapitulant tout ça :
http://www.babeuf.net/samples/logger/
et puisque c'est devenu une habitude, les classes ( dispos sur mon svn ).
Merci de votre attention.