| @@ -418,6 +418,41 @@ log4j.appender.LogFile.file=build.log | |||||
| <p>For more information about configuring Log4J see <a href="http://logging.apache.org/log4j/docs/documentation.html">its | <p>For more information about configuring Log4J see <a href="http://logging.apache.org/log4j/docs/documentation.html">its | ||||
| documentation page</a>.</p> | documentation page</a>.</p> | ||||
| <h4>Using the Log4j 1.2 Bridge</h4> | |||||
| You could use the <a href="http://logging.apache.org/log4j/2.x/log4j-1.2-api/index.html">Log4j Bridge</a> | |||||
| if your application is written against the Log4j (1.x) API, but you want to use the Log4j 2.x runtime. | |||||
| For using the bridge with Ant you have to add | |||||
| <ul> | |||||
| <li>log4j-1.2-api-${log4j.version}.jar</li> | |||||
| <li>log4j-api-${log4j.version}.jar</li> | |||||
| <li>log4j-core-${log4j.version}.jar</li> | |||||
| <li>log4j2.xml</li> | |||||
| </ul> | |||||
| to your classpath (e.g. via the <code>-lib</code> option). | |||||
| Translating the 1.x properties file into the 2.x xml syntax would result in | |||||
| <blockquote> | |||||
| <pre><code><?xml version="1.0" encoding="UTF-8"?> | |||||
| <Configuration status="WARN"> | |||||
| <Appenders> | |||||
| <File name="file" fileName="build.log"> | |||||
| <PatternLayout> | |||||
| <Pattern>[%6r] %8c{1} : %m%n</Pattern> | |||||
| </PatternLayout> | |||||
| </File> | |||||
| </Appenders> | |||||
| <Loggers> | |||||
| <Root level="ERROR"> | |||||
| <AppenderRef ref="file" level="DEBUG"/> | |||||
| </Root> | |||||
| <Logger name="org.apache.tools.ant.Project" level="INFO"/> | |||||
| <Logger name="org.apache.tools.ant.Project" level="INFO"/> | |||||
| <Logger name="org.apache.tools.ant.taskdefs" level="INFO"/> | |||||
| <Logger name="org.apache.tools.ant.taskdefs.Echo" level="WARN"/> | |||||
| </Loggers> | |||||
| </Configuration> | |||||
| </code></pre> | |||||
| </blockquote> | |||||
| <h3><a name="XmlLogger">XmlLogger</a></h3> | <h3><a name="XmlLogger">XmlLogger</a></h3> | ||||
| @@ -605,7 +640,7 @@ developers.</p> | |||||
| <ul> | <ul> | ||||
| <li> | <li> | ||||
| A listener or logger should not write to standard output or error in the <code>messageLogged() method</code>; | |||||
| A listener or logger should not write to standard output or error in the <code>messageLogged()</code> method; | |||||
| Ant captures these internally and it will trigger an infinite loop. | Ant captures these internally and it will trigger an infinite loop. | ||||
| </li> | </li> | ||||
| <li> | <li> | ||||
| @@ -613,7 +648,7 @@ developers.</p> | |||||
| the output is processed. Slow logging means a slow build. | the output is processed. Slow logging means a slow build. | ||||
| </li> | </li> | ||||
| <li>When a build is started, and <code>BuildListener.buildStarted(BuildEvent event)</code> is called, | <li>When a build is started, and <code>BuildListener.buildStarted(BuildEvent event)</code> is called, | ||||
| the project is not fully functional. The build has started, yes, and the event.getProject() method call | |||||
| the project is not fully functional. The build has started, yes, and the <code>event.getProject()</code> method call | |||||
| returns the Project instance, but that project is initialized with JVM and ant properties, nor has it | returns the Project instance, but that project is initialized with JVM and ant properties, nor has it | ||||
| parsed the build file yet. You cannot call <code>Project.getProperty()</code> for property lookup, or | parsed the build file yet. You cannot call <code>Project.getProperty()</code> for property lookup, or | ||||
| <code>Project.getName()</code> to get the project name (it will return null). | <code>Project.getName()</code> to get the project name (it will return null). | ||||