我写了Flyway的封套,我打电话给Nomad。我对Flyway非常满意,除了在Maven之外执行的不间断记录。我创建了一个问题here。 Nomad的每个用户必须自己配置log4j以使Flyway沉默。如果没有这样做,这是有问题的,例如,在Spec测试期间。但是,让配置恰到好处是一个挑战,而且,必须这样做会打破我的库的抽象。
我的问题是:我怎样才能永久沉默飞路,以便任何Nomad用户都没有负担任务?我发现此log4j.xml
有时有效:
<!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>
这使得Flyway窒息到了有用的地步,而不是过于健谈。错误的方向仍然被打破,但并不常见。
答案 0 :(得分:3)
你在log4j.xml
中的表现方式似乎很好。我没有看到任何错误。
由于该项目使用Maven,我建议您添加一个属性文件,而不是log4j.properties
,并将其放在src/main/resources
内容可以是:
log4j.rootCategory=DEBUG, stderr
log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.target=System.err
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern=[%d] %-5p %c %x: %m%n
# Silence springframework messages.
org.springframework=ERROR
也许这会更适合你。管理也变得更容易。
答案 1 :(得分:1)
Flyway唯一的非日志框架依赖是Spring。正如Mohamed Mansour指出的那样,你可以用一个简单的Log4J配置设置除了ERROR消息之外的所有消息。
春天(正如穆罕默德曼苏尔所指出的那样):
org.springframework=ERROR
对于Flyway:
com.googlecode.flyway=ERROR