2010-07-23 10 views
0

Je commence par Log4J et je veux avoir un log4j.properties par défaut dans notre application distribuée Java Web Start, qui enregistre uniquement les erreurs et les événements importants.Log4J et Java Web Start, comment alterner entre différentes configurations?

Mais si quelque chose ne va pas dans un client, je veux avoir un journal plus détaillé, la manière de faire est de définir un autre fichier de configuration log4j dans ce client. Cela peut être fait en spécifiant le fichier de configuration alternatif avec la propriété système log4j.configuration.

mais ... Comment puis-je définir une propriété système pour ce client particulier dans une application lancée par java web start? (Je sais que je peux définir ces propriétés dans le fichier .jnlp, mais cela affecte tous les clients).

Nos utilisateurs travaillent dans un environnement Windows, mais ils ont souvent un ordinateur à permissions restreintes et ils ne peuvent pas accéder à mon PC. Pc-> Propriétés -> Options avancées -> Variables d'environnement (je suis dans un ordinateur espagnol configuré je ne connais pas les noms exacts en anglais).

Répondre

2

Pouvez-vous accéder à un répertoire défini sur le disque client?

Si vous le pouvez, vous pouvez définir une convention: si aucun fichier de configuration n'est trouvé dans le répertoire, la configuration par défaut est utilisée. Sinon, le fichier de configuration spécifique est chargé.

Vous pouvez le faire avec le PropertyConfigurator class de Log4J:

File log4jConfigFile == new File(conventionLocation); 
if(log4jConfigFile.isFile() && log4jConfigFile.exists()) { 
    PropertyConfigurator.configure(conventionLocation); 
} else { 
    PropertyConfigurator.configure(defaultEmbeddedJarLocation); 
} 
+0

Cela fonctionne! y utilisez le fichier user.home pour spécifier le chemin du fichier de configuration log4j de remplacement. – Telcontar

+0

mes questions seraient # 1 comment savez-vous pour charger l'autre fichier de configuration sur une erreur. # 2 Si ce fichier existe sur la machine, il chargera ce fichier de configuration spécifique à chaque fois. –

0

Tout d'abord si vous utilisez des applets, vous devez utiliser un appender qui peut écrire à un emplacement distant de sorte que vous pouvez réellement voir les erreurs sans être physiquement sur la machine locale que l'applet est en cours d'exécution. Appender Types. Ensuite, vous devez créer un appender avec un seuil de n'importe quel niveau que vous consignez les messages de type "accès" normal. Définissez la disposition selon vos désirs. Ensuite, créez un autre appender avec un niveau au moins égal au niveau auquel vous consignez les "erreurs" ainsi que son propre format qui correspond à vos besoins en étant "plus détaillé". De cette façon, lorsque votre code appelle un message d'erreur, il utilisera cette mise en page différente. Log4j est assez complexe mais pas impossible à comprendre. Regardez la documentation au The log4j site et obtenez vos pieds mouillés sur une notation simple. Après cela, vous devriez être en mesure de modifier le code pour obtenir ce que vous désirez.

+0

Mais je veux activer le plus verbeux seulement lorsqu'une erreur est détectée – Telcontar

+0

oui. Par conséquent, si vous utilisez la méthode d'erreur de l'enregistreur dans des conditions d'erreur, appelez uniquement l'enregistreur configuré avec les paramètres de journal plus détaillés. –

Questions connexes