2010-06-16 6 views
2

Ce que j'essaye de réaliser est d'avoir log4j comme seule sortie de mon fichier de construction Ant. Obtenir log4j fonctionne à peu près parfaitement, sauf qu'il étend la sortie des fourmis. J'obtiens donc le DefaultLogger de Ant intercalé avec la sortie de log4j. Prenez un fichier de construction Ant très simple:Sortie Apache Ant en utilisant uniquement log4j

<project name="Maintenance_to_Delivery" default="main" basedir="."> 
    <target name="main"> 
     <echo message="test"> 
    </target> 
</project> 

Et log4j.properties

log4j.rootLogger=ERROR, stdout 
log4j.logger.org.apache.tools.ant.Project=INFO 
log4j.logger.org.apache.tools.ant.Target=INFO 
log4j.logger.org.apache.tools.ant.taskdefs=INFO 
log4j.logger.org.apache.tools.ant.taskdefs.Echo=INFO 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss} %-5p %m%n 
log4j.appender.stdout.Threshold=INFO 

Et l'exécution de ce plus la sortie:

# ant -lib /app/apache-sf/log4j/1.2.16/log4j-1.2.16.jar:. -listener org.apache.tools.ant.listener.Log4jListener 

Buildfile: /home/sysswb/working/qa/sep/M2D-new/build.xml 
16:36:59 INFO Build started. 

main: 
16:37:00 INFO Target "main" started. 
    [echo] TEST 
16:37:00 WARN TEST 
16:37:00 INFO Target "main" finished. 

BUILD SUCCESSFUL 
Total time: 1 second 
16:37:00 INFO Build finished 

donc - est-il possible d'obtenir log4j complètement remplacer la sortie DefaultLogger? ... sans écrire un enregistreur personnalisé? Puisque l'argument -listener enregistre des écouteurs supplémentaires, l'écouteur utilisé par DefaultLogger peut-il être supprimé/désactivé?

Je ne suis que Java 1.6.0_18 et Ant 1.8.0. TIA.

Répondre

0

Vous pouvez passer log4j.properties dans le chemin d'accès aux classes lors de l'exécution de la fourmi.

Check out this, il a beaucoup d'explications détaillées, suivez le commentaire de "Kevin", voici l'extrait:

charges Log4j sa configuration par la recherche de la propriété système log4j.configuration. A défaut, recherche log4j.properties ou log4j.xml sur le chemin de classe.

+0

log4j fonctionne parfaitement - la sortie exemple dans ma question montre que. Mon problème est qu'il étend la sortie ... Je suppose que je devrais ajouter à ma question "comment supprimer la sortie DefaultLogger" – DisabledLeopard

+0

Juste pour plus de clarté, vous ne voulez pas que DefaultLogger soit utilisé par Ant. Au lieu de cela, votre fichier log4j.properties doit être utilisé. Est-ce le cas OU voulez-vous supprimer complètement la journalisation Ant? –

+0

Je veux que log4j contrôle complètement la sortie - Ant ne devrait rien afficher sauf ce que dit log4j. log4j fonctionne bien - j'ai juste du mal à supprimer la partie par défaut de l'enregistreur Ant. – DisabledLeopard

0

essayez d'utiliser le commutateur -e

ant -lib . -listener org.apache.tools.ant.listener.Log4jListener -e main 
Buildfile: D:\install\apache-ant-1.8.0RC1-bin\apache-ant-1.8.0RC1\bin\build.xml 
14:29:20 INFO Build started. 

main: 
14:29:20 INFO Target "main" started. 
test 
14:29:20 WARN test 
14:29:20 INFO Target "main" finished. 

BUILD SUCCESSFUL 
Total time: 0 seconds 
14:29:20 INFO Build finished. 

[echo] test est parti

+0

tout -e est supprimer les ornements. test est toujours sorti tout ce qui a disparu est le "[echo]" - c'est-à-dire la ligne ci-dessus "14:29:20 WARN test" – DisabledLeopard

+0

Mais vous faites écho à 'test' dans le script. donc cela doit apparaître. J'ai mentionné plus haut que le '[echo] test' est parti. – JoseK