----- Original Message -----
From: "Nicolas Delsaux" <[EMAIL PROTECTED]>
To: "Java" <[EMAIL PROTECTED]>
Sent: Thursday, May 16, 2002 9:29 AM
Subject: Classes proxy et log des op�rations


> 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.
> 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 ?
>
> Nicolas Delsaux

Hello,

Moi je ferais une m�thode pas tr�s catholique mais qui a le m�rite d'�tre on
ne peut plus flexible : Un ClassLoader qui modifie les classes charg�es en
rajoutant le log au d�but de chaque m�thode dans le bytecode. Je suis un peu
d�gout� par contre car j'avais fait tout une lib pour parser un fichier
class et rajouter/modifier des trucs � loisir dedans mais je viens de
m'appercevoir que je l'ai perdue ... ( avec cette sublime lib �a t'aurais
pris 10 minutes =). Enfin ca te permet d'utiliser un fichier de config
qui dit quel classes et quel m�thodes logguer .. enfin tu vois le genre.
Si je retrouve cette lib je te pr�vient mais j'ai peu d'espoir en fait.
Reste que le principe est valable � mon avis, � toi de voir :

Pour les avantages :

- Tu ne touche pas � ton code
- Pas de surcout sauf au chargement des classes
- Flexible � mort ( par le biais d'un fichier .properties par exemple, tu
peut d�terminer quels appels logguer ou pas )

Drawbacks :

- C'est un peu la m�thode � d�d� la bricole
- Sans la lib �a va demander un peu de boulot, mais �a sera r�utilisable
 par tous si tu la l�gue � la communaut� =)


Une autre id�e qui me viens c'est d'utiliser le principe qu'utilise
Optimizeit & co. Je pense que c'est l'utilisation du d�bug en remote. Faut
voir.


-- Nicolas Repiquet





Répondre à