ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nick Pellow" <nick.pel...@mindmatics.de>
Subject AW: configuring Log4J from build.xml
Date Fri, 28 Mar 2003 15:31:45 GMT
Hi Erik, 
I have run into your problem before! I solved it with a 
small sortie of ant tasks, not very elegant.

    <!-- grab the correct log4j file we need, and assign 
	   it to a refid so we can reference it later -->
    <filelist id="log4j.config"
        dir="${project.tests}/etc"
        files="log4jConfig.xml"/>
    
    <pathconvert pathsep=""
                 property="log4j.config"
                 refid="log4j.config"/>
    
    <echo message="${log4j.config}"/>

   and then in the junit task itself:

   <sysproperty key="log4j.configuration"
                value="file:/${log4j.config}"/>

  This works really well when running on windows, but seems
  to fail on Linux.... If you just need something to work on
  one or the other, you can tweak the value of value from
	value="file:/${log4j.config}"
	to 
	value="${log4j.config}"   

HTH, and would love an even better solution for this!

Regards,
Nick.

> -----Ursprungliche Nachricht-----
> Von: Erik Price [mailto:eprice@ptc.com]
> Gesendet: Freitag, 28. Marz 2003 16:13
> An: Ant Users List
> Betreff: configuring Log4J from build.xml
> 
> 
> Hi,
> 
> I have just started to incorporate Log4J into my simple command-line 
> application.  I build exclusively with Ant.  To avoid hard-coding Log4J 
> configurations into my code, I wish to use its built-in ability to read 
> a System Property passed in, which specifies the configuration file to 
> use for logging.
> 
> When I don't pass in the System Property, it works fine -- because Log4J 
> automatically searches the current class loader's path for a file named 
> "log4j.properties" and uses that as the configuration file.  I have such 
> a file.  However, I don't wish to rely on this file being in my class 
> loader's class path, so I'm trying to pass in the location of the 
> "log4j.properties" file with <sysproperty>.  I have confirmed (using a 
> simple System.out.println() in my APPLICATION code [not my JUNIT TEST 
> code]) that this property is passed in correctly, and that its value 
> *is* the path to the file, and that the file *does* exist (using 
> File.exists()).  However, Log4J never recognizes the file when passed in 
> this way; it only works if I remove the <sysproperty> element and place 
> the file in the expected part of the class loader's path.
> 
> I have included the relevant section of my build.xml at the end of this 
> email.  Does anyone have experience passing in a Log4J properties file 
> via Ant?  If someone has either (1) an alternative solution, or (2) any 
> advice, I'm willing to listen -- I would just like to avoid hard-coding 
> configuration information into my application's code.
> 
> 
> Thank you,
> 
> Erik
> 
> (PS: I did ask about this on the Log4J mailing list but it doesn't seem 
> to get a lot of traffic... I just thought maybe someone here has 
> experience combining Log4J and Ant.)
> 
> 
> 
> 
>    <!-- ===== test target
> 
>    Performs JUnit tests against compiled code.
>    -->
>    <target name="test" depends="compile,test-init"
>     description="Perform JUnit tests">
> 
>      <javac destdir="${test.dir}"
>             debug="${build.debug}"
>             includeAntRuntime="false"
>             srcdir="test">
>        <classpath refid="test.classpath"/>
>      </javac>
> 
>      <!-- grab any other non-source files -->
>      <copy todir="${test.dir}">
>        <fileset dir="test" excludes="**/*.java"/>
>      </copy>
> 
>      <!-- unit-test time
>           printsummary   not needed b/c we use brief formatter with
>                          usefile off
>           haltonfailure  we set a flag instead (otherwise junitreports
>                          dont run)
>           fork           CaliberRM SDK requires that we fork unit tests
>           errorProperty  these props flag fail task (after junitreport)
>           failureProperty -->
>      <junit printsummary="false"
>             haltonfailure="false"
>             fork="true"
>             errorProperty="test.failed"
>             failureProperty="test.failed">
>        <classpath refid="test.classpath"/>
> 
> <!-- this is where I pass the property in.  The value is set
>       earlier in build.xml and *is* valid -->
> 
>        <sysproperty key="log4j.configuration"
>                     value="${test.log4j.props}"/>
>        <sysproperty key="test1.file.path"
>                     value="${test.dir}/testreqreport1.xml"/>
>        <!-- output to console -->
>        <formatter type="brief" usefile="false"/>
>        <!-- output to file -->
>        <formatter type="xml"/>
>        <!-- this is where we decide which files to junit -->
>        <batchtest todir="${test.data.dir}">
>              <fileset dir="${test.dir}" includes="**/*Test.class"/>
>        </batchtest>
>      </junit>
> 
>      <!-- generate a user-friendly report from xml -->
>      <junitreport todir="${test.data.dir}">
>        <fileset dir="${test.data.dir}">
>          <include name="TEST-*.xml"/>
>        </fileset>
>        <report format="frames" todir="${test.reports.dir}"/>
>      </junitreport>
> 
>      <!-- if the junit task set test.failed -->
>      <fail message="Tests failed.  Check log and/or reports."
>            if="test.failed"/>
> 
>    </target>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
> 
> 
> 


Mime
View raw message