I’ve written a wrapper around Flyway I call Nomad. I am well pleased with Flyway, save the incessant logging it performs outside of Maven. I created an issue here. Each user of Nomad must make their own configuration of log4j to silence Flyway. This is problematic if not done, for instance, during Spec testing. However, getting the configuration just right is a challenge and, moreover, having to do this breaks the abstraction of my library.
My question is this: how can I permanently silence flyway so that any user of Nomad is not burdened with the task? I’ve found that this log4j.xml sometimes works:
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %t %-5p %c{1} - %m%n"/>
</layout>
</appender>
<logger name="org.springframework" additivity="false">
<level value="error"/>
<appender-ref ref="console"/>
</logger>
<root>
<priority value="error"/>
<appender-ref ref="console"/>
</root>
</log4j:configuration>
This stifles Flyway to the point of being helpful, rather than overly chatty. The misdirection is still broken, but not often.
The way you have done it in
log4j.xmlseems good. I don’t see anything wrong.Since the project uses Maven, I recommend you adding a property file instead
log4j.properties, that you place that insrc/main/resourcesThe contents can be:
Perhaps that will work better with you. It becomes easier to manage too.