2010-11-19 5 views
1

Notre application Java WebStart n'inclut pas de fichier de configuration log4j; il met simplement en place des enregistreurs et des appenders codés en dur. Je souhaite que les clients individuels puissent déposer un fichier log4j.properties quelque part et configurer leur propre journalisation personnalisée dans les situations de dépannage. Je pourrais regrouper un fichier log4j.properties dans l'un des fichiers jar de notre application quelque part et cela permettrait la configuration, mais alors la configuration serait la même pour chaque client au lieu d'affecter uniquement le client que je veux dépanner. De plus, je ne serais pas en mesure de modifier les paramètres à la volée.Configuration log4j avec Java Web Start

Y at-il un moyen que je peux détourner le log4j initialization procedure pour utiliser un fichier de configuration par client?

Répondre

3

Le problème de base ici est que Java Web Start restreint sévèrement l'accès à la machine.

Vous devriez être en mesure de le faire, si vous exécutez une application signée ET l'utilisateur vous permet un accès complet à la machine. Sinon, vous ne pouvez pas le faire avec log4j avec le mécanisme par défaut.

Vous pouvez écrire votre propre configurateur qui lit à partir du système de fichiers à l'aide de l'API Java WebStart, puis l'alimente en log4j, mais cela nécessite un peu de coude.

+0

J'ai un accès complet à la machine. En espérant que je n'ai pas besoin d'écrire mon propre configurateur, car j'aimerais pouvoir le faire sur certaines machines déjà déployées, sans devoir écrire de nouveaux codes et mettre à niveau. – skiphoppy

+0

Si vous avez un accès complet à la machine, alors - non testé - définissez la propriété système log4j.configuration dans le fichier jnlp. Voir http://logging.apache.org/log4j/1.2/manual.html - section "Procédure d'initialisation par défaut" pour plus de détails. –

1

Vous pouvez utiliser le PersistenceService pour stocker la configuration de log4j sur la machine de l'utilisateur local (fonctionne sans signature), ou au moins stocker un indicateur indiquant s'il faut charger une configuration spéciale ou non au démarrage de votre application de démarrage Web.

Il existe également un FileOpenService avec lequel l'utilisateur final peut ouvrir un fichier log4j.xml local pour reconfigurer la fonction de journalisation à la volée. De cette façon, l'utilisateur a le contrôle sur la configuration et il a le contrôle quand et où l'appliquer. Votre code d'application qui utilise FileOpenService pour obtenir le flux dans le fichier de configuration log4j peut ensuite utiliser le DOMConfigurator.configure (InputStream) pour reconfigurer log4j.

Questions connexes