Nicolas Delsaux wrote:
> Salut, je suis en train de me coltiner un probl�me de log assez peu �vident
> : dans notre futur logiciel, on souhaite pouvoir logger les op�rations
> arrivant sur quasiment n'importe quel objet, et de mani�re uniforme.
En version de production, en version de test ou en version de
developpement ?
> C'est-�-dire que d�s qu'un setXXX est appel�, un log est �crit. Or, ce genre
> de fonctionnalit� implique d'ajouter dans chaque setXXX la ligne
> logOperation(this, "..."); Et avec mes coll�gues, nous trouvons que �a va
> rajouter pas mal de lignes de code au programme. Est-il possible, dans ce
> genre de cas, d'utiliser la classe Proxy de java.lang.reflect pour ajouter,
> � l'ex�cution et pour les classes qui nous int�ressent, cette ligne de log,
> sans avoir bien s�r � modifier la m�thode de la classe d'un pouill�me ?
L'utilisation des Proxies est possible mais je pense que ca doit
ralentir un peu et que ca pose pas mal de contraintes sur le code.
Je vois deux autres possibilites:
1) La plus efficace: generer les instructions de log (Alma ?)
Source Java --*--> Source Java genere avec instr. log
* cible detectant les instructions set() et ajoutant l'instruction
log() en debut de methode.
2) Un peu plus complique mais independant de l'appli: utiliser JVMPI
Ecrire un prog compatible jvmpi (profiler) qui log les entrees dans
les methodes dont le nom commence par 'set', avec les parametres.
Guillaume
http://www.memoire.com/guillaume-desnoix/alma/