我有一個項目,我使用log4j進行日誌記錄,它用於很好的工作。現在,我不得不添加一個依賴項,它使用slf4j,並且突然間日誌記錄不再按預期工作 - 代碼的某些部分忽略了log4j配置並在Eclipse控制檯中登錄爲紅色。slf4j依賴打破log4j配置的問題
這是依賴關係樹日誌記錄時的工作:
my.package.program:program-database:jar:0.3.0
+- my.package.program:program-common:jar:0.3.0:compile
| +- org.apache.commons:commons-lang3:jar:3.4:compile
| \- commons-io:commons-io:jar:2.4:compile
+- org.springframework:spring-tx:jar:4.1.0.RELEASE:compile
| \- org.springframework:spring-core:jar:4.1.0.RELEASE:compile
| \- commons-logging:commons-logging:jar:1.1.3:compile
+- org.springframework:spring-jdbc:jar:4.1.0.RELEASE:compile
+- org.jooq:jooq:jar:3.6.2:compile
+- org.jooq:jooq-meta:jar:3.6.2:compile
+- org.jooq:jooq-codegen:jar:3.6.2:compile
+- postgresql:postgresql:jar:9.1-901-1.jdbc4:compile
+- org.springframework:spring-beans:jar:4.1.0.RELEASE:compile
+- org.springframework:spring-context:jar:4.1.0.RELEASE:compile
| +- org.springframework:spring-aop:jar:4.1.0.RELEASE:compile
| | \- aopalliance:aopalliance:jar:1.0:compile
| \- org.springframework:spring-expression:jar:4.1.0.RELEASE:compile
+- org.apache.logging.log4j:log4j-api:jar:2.1:compile
+- org.apache.logging.log4j:log4j-core:jar:2.1:compile
+- org.apache.logging.log4j:log4j-1.2-api:jar:2.1:compile
+- junit:junit:jar:4.11:test
| \- org.hamcrest:hamcrest-core:jar:1.3:test
+- org.springframework:spring-test:jar:4.1.0.RELEASE:test
這是後我加飛路插件,它打破記錄的樹:
my.package.program:program-database:jar:0.3.0
+- my.package.program:program-common:jar:0.3.0:compile
| +- org.apache.commons:commons-lang3:jar:3.4:compile
| \- commons-io:commons-io:jar:2.4:compile
+- org.springframework:spring-tx:jar:4.1.0.RELEASE:compile
| \- org.springframework:spring-core:jar:4.1.0.RELEASE:compile
| \- commons-logging:commons-logging:jar:1.1.3:compile
+- org.springframework:spring-jdbc:jar:4.1.0.RELEASE:compile
+- org.jooq:jooq:jar:3.6.2:compile
+- org.jooq:jooq-meta:jar:3.6.2:compile
+- org.jooq:jooq-codegen:jar:3.6.2:compile
+- postgresql:postgresql:jar:9.1-901-1.jdbc4:compile
+- org.flywaydb.flyway-test-extensions:flyway-spring-test:jar:3.2.1:test
| +- org.slf4j:slf4j-api:jar:1.5.6:test
| +- org.slf4j:slf4j-simple:jar:1.5.6:test
| +- org.flywaydb:flyway-core:jar:3.2.1:test
| \- commons-dbcp:commons-dbcp:jar:1.4:test
| \- commons-pool:commons-pool:jar:1.5.4:test
+- org.springframework:spring-beans:jar:4.1.0.RELEASE:compile
+- org.springframework:spring-context:jar:4.1.0.RELEASE:compile
| +- org.springframework:spring-aop:jar:4.1.0.RELEASE:compile
| | \- aopalliance:aopalliance:jar:1.0:compile
| \- org.springframework:spring-expression:jar:4.1.0.RELEASE:compile
+- org.apache.logging.log4j:log4j-api:jar:2.1:compile
+- org.apache.logging.log4j:log4j-core:jar:2.1:compile
+- org.apache.logging.log4j:log4j-1.2-api:jar:2.1:compile
+- junit:junit:jar:4.11:test
| \- org.hamcrest:hamcrest-core:jar:1.3:test
+- org.springframework:spring-test:jar:4.1.0.RELEASE:test
我認爲問題來自於一個事實那春天包括commons-logging的傳遞依賴關係,當flyway拉入slf4j時,cli獲得優先權,而我的log4j配置被某些庫忽略(例如jooq和flyway開始登錄爲紅色)。
我嘗試了這裏提到的所有3個選項: http://www.slf4j.org/faq.html#excludingJCL 但一些爲什麼他們都沒有工作。當然有一個效果,但在解決方案2和3之後,春天也開始登錄紅色。
試圖在不同的SLF4J綁定和橋樑盲目插頭,沒有運氣之後 - 我必須承認,我不知道日誌框架不夠好,拿出一個解決方案自己。任何幫助和建議都會受到歡迎。
這並不是真正的準確,因爲Flyway本身對任何日誌框架都沒有必要的依賴關係。然而,它將在運行時檢測到您在類路徑中的一個並使用它。 –
是的,這個依賴並不是直接來自Flyway--當我開始在構建中使用flyway-spring-test組件時就被拉進來了。我會修改我的答案以反映 – Tarmo
@AxelFontaine:有趣的,你是如何做到的?只有反思? –