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.