Заглушение Flyway проблемы с log4j

Я написал оболочку вокруг Flyway, которую я вызываю Nomad. Я очень доволен Flyway, за исключением непрерывной регистрации, которую он выполняет вне Maven. Я создал задачу здесь. Каждый пользователь Nomad должен сделать свою собственную конфигурацию log4j, чтобы отключить Flyway. Это проблематично, если этого не сделать, например, во время тестирования Spec. Однако получить конфигурацию правильно сложно, и, кроме того, это нарушает абстракцию моей библиотеки.

У меня такой вопрос: как мне навсегда заглушить 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 до такой степени, что он может быть полезным, а не чрезмерно болтливым. Неправильное направление все еще нарушается, но не часто.


person troutwine    schedule 09.06.2011    source источник


Ответы (2)


То, как вы это сделали в 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

Возможно, это сработает лучше с вами. Управлять тоже становится легче.

person Mohamed Mansour    schedule 09.06.2011
comment
Мне непонятна цель вашей рекомендации. Nomad использует SBT — Apache Ivy внизу — и хотя Flyway действительно использует Maven в качестве инструмента сборки, к тому времени, когда я доберусь до его использования, Flyway будет просто банкой. Кроме того, спасибо за более краткий эквивалент свойств. - person troutwine; 10.06.2011

Единственной зависимостью Flyway от фреймворка без ведения журнала является Spring. Как указал Мохамед Мансур, вы можете подавить все сообщения, кроме ERROR, с помощью простой настройки конфигурации Log4J.

Для весны (как указал Мохамед Мансур):

org.springframework=ERROR

Для пролетного пути:

com.googlecode.flyway=ERROR
person Axel Fontaine    schedule 10.06.2011
comment
Затем это становится необходимым шагом настройки для каждого пользователя Nomad; Я бы предпочел, чтобы это было сделано один раз в Nomad. - person troutwine; 10.06.2011