- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个项目,我在其中使用 log4j 进行日志记录,它曾经运行良好。现在我不得不添加一个使用 slf4j 的依赖项,突然日志记录不再按预期工作 - 代码的某些部分忽略了我的 log4j 配置并在 Eclipse 控制台中以红色登录。
这是日志记录工作时的依赖树:
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
这是我添加 flyway 插件后的树,它破坏了日志记录:
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
我认为问题来自于 spring 包含 commons-logging 的传递依赖,当 flyway 引入 slf4j 时,cli 获得优先级并且我的 log4j 配置被一些库忽略(等 jooq 和 flyway 开始以红色登录).
我尝试了这里提到的所有 3 个选项: http://www.slf4j.org/faq.html#excludingJCL但不知为什么他们都没有工作。效果肯定是有的,但是方案2和方案3之后,spring也开始登录红色了。
在尝试盲目插入不同的 slf4j 绑定(bind)和桥接器但没有成功之后 - 我不得不承认我对日志记录框架的了解不够深,无法自己提出解决方案。欢迎任何帮助和建议。
最佳答案
原来我的问题是由 flyway-spring-test 扩展引起的,它包括 slf4j-simple 绑定(bind)作为依赖项。即使我自己添加了 log4j 绑定(bind),仍然使用 slf4j-simple 绑定(bind),因此我的 log4j 配置对使用 slf4j 进行日志记录的代码部分没有影响。
更复杂的是,jOOQ 在加载时检查日志框架,如果找到,则首选 slf4j - 因此添加 slf4j 依赖与 flyway-spring-test 扩展强制 jOOQ 自动切换日志框架,为我。
最后,一旦清楚了问题的原因,修复就很简单了——删除 slf4j-simple 绑定(bind)并添加 slf4j-log4j 绑定(bind)。由于版本不匹配问题,我不得不将 slf4j-api 依赖项也替换为更新的版本。我采取的步骤是:
日志记录现在似乎可以工作了。最终的依赖树是:
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.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.3:compile
+- org.apache.logging.log4j:log4j-core:jar:2.3:compile
+- org.apache.logging.log4j:log4j-1.2-api:jar:2.3:compile
+- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.3:compile
+- org.slf4j:slf4j-api:jar:1.7.12: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
关于java - slf4j 依赖性破坏 log4j 配置的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30959849/
我正在使用 puppet 在云基础设施上自动配置服务器。我将 list 分成几个 .pp。 我有以下错误: Could not find dependency Mehc_module::Filestr
我开始学习 Angular ,但我在管理依赖项时遇到麻烦,并且不明白为什么这不起作用。 我的html: Title
我正在尝试编写一个使用 jnetpcap 并适合 Linux 和 Windows 的程序。我使用 Maven 编译我的程序。 目前对 jnetpcap 的依赖是: jnetpcap
我很难弄清楚这一点,我首先提到类结构: 汽车经销商 汽车工厂 汽车(界面) BlueCar(汽车实现) RedCar(汽车实现) 轮胎 CarFactory 类有一个返回 Car 的工厂方法。在 Sp
我正在研究一些示例,并提出了这个可行的答案 - 文档测试中设置的挑战: def remove(sub, s): """ >>> remove('an', 'banana')
当创建一个由其他类组成的类时,是否值得通过使用指针而不是值来减少依赖性(从而减少编译时间)? 例如,下面使用值。 // ThingId.hpp class ThingId { // ... }
我在为 debug 和 release 构建类型以及维度指定不同的依赖项时遇到问题。 在我的 app.gradle 中,我指定了 1 个维度 和 2 个 productFlavors,如下所示: an
我试图从Grails的默认依赖项中排除Apache Commons库1.4.0版,因为它有一个错误。 https://github.com/grails/grails-core/issues/9000
我使用我的 MacBook 开发了一个 Node.JS 小应用程序。一切都很好,我将把它部署到 Heroku。 git push heroku master 命令退出并出现错误: 9045 info
我在数据库中有几行。我创建了一个 Windows 服务,它每 5 分钟更新一次数据库中的新行。 现在我想跟踪新行,如果有任何......在 WCF 服务中,并向客户端发送有关它的通知。 数据库是SQL
我的程序依赖于 USER32.dll、SHELL32.dll、ADVAPI32.dll、WS2_32.dll、GDI32.dll 和 KERNEL32.dll。都在system32文件夹中。有什么方法
我有 3 个 dag A、B 和 C。只有在 dag A 和 B 中的任务完成后,才应触发 Dag C。有没有办法在 Airflow 中实现这一点?我能够使用 Triggerdagrun Operat
为了编写可重用的 QML 代码,我正在寻找一个(静态代码)检查器,它可以检测不同 qml 文件之间不需要的依赖关系。 举一个例子,其中 B.qml 依赖于 A.qml 中的标识符: A.qml Ite
我创建了 pom.ml 文件,如下所述: 4.0.0 friendr-core friendr-core 0.0.1-SNAPSHOT jar fri
下图中,左边是C代码,右边是未优化的LLVM IR形式。 The Figure 在 IR 上运行 MemoryDependenceAnalysis 可查找内存依赖性。原始代码及其 IR 等效代码中
我有所有必要的依赖: ch.qos.logback logback-classic 1.0.13 org.slf4j slf4j-api 1.7.
我使用 wsimport 从 WSDL 文件生成客户端代码,我已成功测试此生成的代码并且它可以工作,但有一个问题,该代码像这样引用 WSDL 文件, static { URL url = nu
我正在制作一个检查库依赖性的 configure.ac 文件。 完整的代码是, AC_CONFIG_AUX_DIR([build-aux]) AC_INIT([myprogram], [0.1], [
我正面临这个似乎无法解决的问题。这是场景: 我正在构建使用 gradle 依赖项的 apk,并且此依赖项是特定于体系结构的,因此对于 x86 的 apk,我需要不同的依赖项,对于 arm 也需要不同的
我正在使用 npm 安装依赖项。安装这些之后,我想与非技术人员且没有 npm 的人共享我的项目,因此我想在应用程序中发布 node_modules。 但是,由于 node 嵌套了依赖关系,它创建的文件
我是一名优秀的程序员,十分优秀!