ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Steve Loughran <>
Subject Re: Ant log message levels for output of Exec-like tasks
Date Fri, 09 Dec 2005 10:12:27 GMT
Jim Doyle wrote:
> Hi,
> We've just added our Ant build to CruiseControl and are working to make 
> it as usable as possible.  One of our issues is the interpretation of 
> Ant log messages by CruiseControl.  CruiseControl captures all log 
> messages issued by the Ant build and captures the messages' levels 
> (DEBUG, INFO, etc.).  The CruiseControl reporting app uses these levels 
> to filter what gets displayed in different sections of the build 
> report.  By default, all Ant WARN or ERROR messages are displayed in 
> CruiseControl's "Errors/Warnings" report.  Naturally, we're now 
> interested in making sure our build's Ant log messages are logged with 
> an appropriate level.  I think this is similar to other Ant users' 
> concerns - see the "Setting Project.MSG_ERR for compiler error messages" 
> message posted just today.

Its an interesting thought. Normally when I  fiddle with logging I use 
the Log4JListener and then you get full control over the log. But CC is 
doing its own capture, which stops you doing that.

> It seems like it's basically the individual task that's responsible for 
> figuring out the log level for a given message it issues.  Some tasks 
> give the buildfile control over this - like <echo> - while others don't 
> - like <java>.
> I'd like to propose that exec-like tasks like <exec> and <java>, which 
> already support <redirector> functionality for process output, extend 
> that functionality to allow <redirector>s that say exactly how Ant 
> should log the output from the exec'd process.  In Ant 1.6.5 you can 
> specify a <redirector> that redirects stdout and stderr, independently, 
> to a property or to a file:
> <exec executable="cat">
>  <redirector outputproperty="redirector.out"
>                     error="outputs/redirector.err.txt"/>
>   </redirector>
> </exec>
> What if you could specify a <redirector> that redirects to Ant log 
> messages, but explicitly sets the log level:
> <exec executable="cat">
>  <redirector outputproperty="redirector.out"
>                     errorlog="true"
>                     errorloglevel="INFO"/>
>   </redirector>
> </exec>
> The above redirector would send cat's stdout to the Ant property 
> "redirector.out", while sending cat's stderr  to the Ant log as INFO 
> messages.  Or what I think would be better syntax:
> <exec executable="cat">
>  <redirector>
>    <output>
>       <property name="redirector.out"/>
>     </output>
>     <error>
>        <log level="INFO"/>
>     </error>
>   </redirector>
> </exec>

yeah, that looks good. Feel free to write it *and* the unit tests, and 
we can add it to Ant1.7. Ant's testharness does capture stdout and 
stderr, so you can make assertions about what gets logged.


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message