2

我已经为我称为Nomad的Flyway编写了一个包装器。我对 Flyway 很满意,省去了它在 Maven 之外执行的不间断日志记录。我在这里创建了一个问题。Nomad 的每个用户都必须自己配置 log4j 以使 Flyway 静音。如果不这样做,例如在规范测试期间,这是有问题的。然而,让配置恰到好处是一个挑战,而且,必须这样做会破坏我的库的抽象。

我的问题是:我怎样才能永久地使飞行路线保持沉默,以便 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 的帮助,而不是过于健谈。误导仍然被打破,但不经常。

4

2 回答 2

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

也许这对你会更好。它也变得更容易管理。

于 2011-06-09T03:44:40.387 回答
1

Flyway 唯一的非日志框架依赖项是 Spring。正如 Mohamed Mansour 指出的那样,您可以使用简单的 Log4J 配置设置来抑制除 ERROR 消息之外的所有消息。

对于 Spring(正如 Mohamed Mansour 所指出的):

org.springframework=ERROR

对于飞路:

com.googlecode.flyway=ERROR
于 2011-06-10T17:39:36.217 回答