The Cocoon 2.2 Maven plugin provides a good method for developing a block. When we configure the plugin correctly we can start Jetty and have a reloadable web application. This means every change we make to a source file is reflected immediately in the web application. The plugin also has a default Log4j configuration file. The configuration defines a FileAppender with the filename ./target/work/log/log4j.log. The append property is set to true. This can result in a very big log4j.log file, because as long we don't run mvn clean all logging is added to the existing file.
We can change the configuration for Log4j by setting a parameter in the Cocoon 2.2 Maven plugin. We must add the parameter customLog4jXconf to our plugin definition:
<plugin>
<groupId>org.apache.cocoon</groupId>
<artifactId>cocoon-maven-plugin</artifactId>
<version>1.0.0-M2</version>
<executions>
<execution>
<id>prepare</id>
<phase>compile</phase>
<goals>
<goal>prepare</goal>
</goals>
<configuration>
<customLog4jXconf>src/main/etc/log4j.xml</customLog4jXconf>
</configuration>
</execution>
</executions>
</plugin>Notice we defined the parameter customLog4jXconf and set it to the file src/main/etc/log4j.xml. Now we can create the new log4j.xml file and save it in src/main/etc:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CORE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="./target/work/log/log4j.log"/>
<param name="Append" value="true"/>
<param name="MaxBackupIndex" value="10"/>
<param name="MaxFileSize" value="5MB"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %t %-5p %c{2} - %m%n"/>
</layout>
</appender>
<root>
<priority value="\${org.apache.cocoon.log4j.loglevel}"/>
<appender-ref ref="CORE" />
</root>
</log4j:configuration>Notice: in line 14 we must escape the $ sign with a \. The plugin will run this file through StringTemplate and therefore we must escape the $ sign.
Now when we run mvn jetty:run our new Log4j configuration file is used.