Comment puis-je fournir une coutume log4j.xml pour les différentes tâches ant?
J'ai un fichier de build que, dans le cadre du processus de construction s'appuie sur plusieurs taskdefs. Ces taskdef des éléments (par exemple, webdoclet et jasper2) utiliser log4j comme un bûcheron. Idéalement, je voudrais être en mesure de fournir un autre fichier de configuration log4j pour chaque, mais très peu, je voudrais être en mesure de spécifier le fichier de configuration log4j est utilisé.
Ce que j'ai fait que l'habitude de travailler était de mettre à l'avant du chemin de classe le répertoire contenant le log4j.xml que je voulais le taskdef à utiliser. Par exemple:
<nom de la cible="définir.jasper2"> <path id="jspc.classpath"> <!-- Mettre cela en PREMIER afin de Jasper trouverez l'log4j.xml dans le répertoire de compilation --> <pathelement emplacement="Build"/> <fileset dir="${tomcat.libs}"> .... </fileset> <pathelement location="${log4j.jar}"/> .... </path> <taskdef name="jasper2" classname="org.apache.jasper.JspC" classpathref="jspc.classpath"/> </target>
J'ai vérifié que, en fait, le "Construire" le répertoire est à l'avant du classpath et qu'un log4j.xml il existe dans ce répertoire. Cependant, lorsque je lance ant en mode verbose avec log4j dans le debug, je vois que log4j est de choisir le log4j.xml c'est dans le répertoire de travail courant, ce qui n'est pas celui que je veux. Log4j semble pas être à l'aide de la variable classpath pour résoudre le défaut log4j.xml.
Je suis en utilisant log4j 1.2.8 (incorporé à l'intérieur d'un cadre plus large, donc je ne peux pas le mettre à niveau) et certains de ces taskdefs semblent reposer sur commons-logging 1.0.3. Le processus de construction des usages Sun Java 5.
Si je set ANT_OPTS=-Dlog4j.configuration=Build/log4j.xml
avant l'exécution de la fourmi, la taskdefs charge correctement désiré log4j.xml.
Mettre la "construction" de répertoire à l'avant du chemin de la taskdefs l'habitude de travailler. Je ne sais pas ce qui a changé. Comment puis-je restaurer le comportement où je peux contrôler, dans le cadre des build.xml -- fichier de configuration log4j est utilisé pour une tâche donnée? Est-il un moyen autre que de fixer ANT_OPTS et autres que la réorganisation des fichiers à déplacer l'application du log4j.xml hors du répertoire de travail actuel pour obtenir log4j pour trouver la bonne log4j.xml fichier?
OriginalL'auteur Eddie | 2009-01-26
Vous devez vous connecter pour publier un commentaire.
Je suis en mesure de spécifier un fichier de configuration à l'aide d'un fichier relatif URL avec
sysproperty
comme ceci:OriginalL'auteur Peter Hilton
Log4j charge sa configuration par à la recherche pour le système de la propriété log4j.la configuration. À défaut, il recherche log4j.propriétés ou log4j.xml sur le chemin de la classe.
Sur certaines tâches ant que la fourche d'une nouvelle JVM, vous pouvez spécifier le log4j.configuration du système de la propriété avec des <jvmarg/> tag. Cependant, sur ceux qui n'ont pas votre meilleur pari est de créer un classpath dont la première entrée est la configuration log4j que vous souhaitez utiliser.
Il semble que le jasper2 tâche prend en charge la "fourchette" de l'élément, vous pouvez définir que de vrai et essayez d'utiliser un jvmarg?
utilisez l'option-verbose et de débogage des arguments lors du démarrage de la fourmi, peut-être la extra info sera utile sur les raisons de l'échec
OriginalL'auteur Kevin
Vous pouvez déplacer le log4j.xml fichier qui est dans le répertoire de travail actuel?
OriginalL'auteur James A. N. Stauffer
Avez-vous essayé la définition de cette propriété à l'aide de sysproperty?
Devrait ressembler à quelque chose comme ceci:
OriginalL'auteur James Van Huis