Préparation de l’environnement : configuration de log4j

Dans ce second volet de la série de l’utilisation d’OSGi côté serveur, je vais présenter comment on peut configurer log4j pour qu’on puisse voir les logs générés par les différents bundles dans la console d’Eclipse.

Dans un programme Java ordianire, log4j cherche un fichier log4j.properties (ou xml) dans le racine du classpath. Or, dans un conteneur OSGi, la notion de classpath est différente. On n’a plus de classpath unique par application, mais plutôt un classpath séparé par bundle.

Pour résoudre celà, on utilise la notion de fragments. Un fragment est un bundle spécial, qui à l’exécution (à la pahse de resolution), se trouve attaché et mergé dans un autre bundle hôte. Après, il sera traités exactement comme faisant partie du bundle hôte.

Dans le cas précis de ce billet, on va créer un fragment avec le bundle de log4j comme hôte, et on va placer le fichier log4j.properties dans ce fragment.
Ainsi, quand log4j va rechercher un fichier de configuration dans la racind du classpath (le classpath de son bundle), il trouvera et utilisera ce fichier

Eclipse PDE fournit un assistant pour la création d’un fragment. Faites « New > Other > Plug-In Developement > Fragment Project » :

fragment-wizard-1

Saissisez un nom pour ce fragment, « ssosgi.log4j.config » dans mon cas par exemple et cochez l’option « an OSGi framework” sous « Target Platform »:

fragment-wizard-2

Dans la page suivante, utilisez le bouton « Browse » pour sélectionnez le bundle de log4j comme Host Plig-In

fragment-wizard-3

Et validez.

Dans le projet, créez un fichier log4.properties avec le contenu suivant :

log4j.rootLogger=info, con, file
log4j.appender.con=org.apache.log4j.ConsoleAppender
log4j.appender.con.layout=org.apache.log4j.PatternLayout
log4j.appender.con.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%5p [%t] (%F\:%L) - %m%n
log4j.appender.file.File=/home/djo/ssosgi.log 
log4j.appender.file.append=false

Notez que vous pouvez personnaliser la configuration pour l’adapter à vos besoins. Pensez notamment à changer le nom du fichier de log («/home/djo/ssosgi.log» dans mon cas).

Il faut ensuite ajouter ce fragment à la configuration de lancement. Allez dans la fnêtre de configuration de celle-ci (comme décrit dans le billet précédent) et cochez le fragment qu’on vient de créer dans la liste des plugins à inclure.

Appliquez et lancer la configuration. Vous devriez avoir un log plus détaillé dans la console d’Eclipse :

console-log

—-

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: