52 votes

À l’aide de variables d’environnement système dans la configuration de log4j xml

Est-il possible de variables d’environnement système référence (par opposition à des propriétés de système de Java) dans un fichier xml de configuration de log4j ?

Je voudrais pouvoir faire quelque chose comme :

et l’ai reçu que du système variables d’environnement, alors je peux éviter d’avoir à passer beaucoup de choses avec les paramètres -D.

53voto

Einar Points 1687

J’ai essayé de le faire récemment et n’a pas pu faire fonctionner. Ce que j’ai fini par faire envoie une variable au démarrage. Dites donc, vous avez une variable d’environnement appelée $LOG_LEVEL :

et au démarrage...

12voto

Martin Probst Points 3875

Je pense que ce n'est pas pris en charge, mais, fondamentalement, vous pouvez faire deux choses à apporter à vos variables d'environnement:

  1. L'Utilisation Du Système.setProperty avant de Log4J se configure

  2. Convertir vos variables d'environnement dans les propriétés du système dans votre lanceur

La première option, fondamentalement, se résume à ceci:

for (Map<String,String>.Entry entry : System.getenv().entrySet()) {
  System.setProperty(entry.getKey(), entry.getValue());
}

... mais la question est bien sûr où placer ce code. En particulier si vous êtes en cours d'exécution dans une sorte de conteneur Tomcat ou similaires, cela pourrait être gênant.

L'autre dépend en grande partie de votre environnement. En gros si vous avez un script shell qui lance votre application, vous pouvez écrire quelques shell magie pour définir toutes les variables d'environnement comme des propriétés, ou seulement ceux dont vous avez besoin, par exemple:

java -DMY_ENV=$MY_ENV -DMY_OTHER_ENV=$MY_OTHER_ENV -cp ... com.example.Main

Il est également possible de modifier les scripts de démarrage de votre serveur à l'appui, par ex. catalina.sh ou similaire.

6voto

Inari Points 33

Vous devez mettre un signe deux-points entre env et le nom de la variable, comme ceci :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X