沉默Flyway - 一个log4j问题

时间:2011-06-09 00:56:21

标签: java logging log4j flyway

我写了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窒息到了有用的地步,而不是过于健谈。错误的方向仍然被打破,但并不常见。

2 个答案:

答案 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