log4j - 删除 Log4j 并使用 Logback
问题描述
是否可以使用 Logback 而不是 Log4j?我已经从我的所有项目成绩文件中排除了 log4j 依赖项,但是当我构建节点时,log4j 仍然从 Corda-core 引入。
下面是我如何排除 gradle 中的依赖项。
configurations.all {
exclude group: 'org.apache.logging.log4j', module: 'log4j-api'
exclude group: 'org.apache.logging.log4j', module: 'log4j-core'
exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl'
exclude group: "org.slf4j", module: "jcl-over-slf4j"
exclude group: 'org.apache.logging.log4j', module: 'log4j-web'
}
然后我将 logback 添加为依赖项
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
但是在部署节点并启动它们之后,我可以看到它们仍然使用 log4j 记录器工厂。
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/daniel.newton/.capsule/apps/net.corda.node.Corda_3.1-corda/log4j-slf4j-impl-2.9.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/daniel.newton/dev/projects/corda/build/nodes/party/cordapps/trade-input-cordapp-1.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/daniel.newton/dev/projects/corda/build/nodes/party/cordapps/common-1.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/daniel.newton/dev/projects/corda/build/nodes/party/cordapps/corda-1.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
这些日志行表明甚至没有找到 logback。
一条额外的信息是,当我运行与下面的 cordapps 相同的项目之一中存在的测试时,运行良好并成功获取 logback,但运行节点却没有。
解决方案
选择日志框架的最佳实践是它应该在应用程序级别定义,而不是在库(cordapp)级别。
对于 cordapps,应该使用SLF4J
API,并将其留给运行时 ( corda.jar
) 来决定适当的绑定。corda.jar
使用 log4j 实现。也许您需要在 github 上提出一个问题,以便能够切换日志提供程序。
推荐阅读
- c# - 为什么我的 JWT 令牌没有传递给控制器的方法?
- revit-api - Revit:为什么我的墙边界框与它的 LocationCurve 不一致?
- ios - CoreStore 在更新数据模型时插入数组作为关系对象
- javascript - 多维数组的排序序列跨浏览器兼容并具有“自然情况”
- angular - WebStorm 不会在 Angular CLI 应用程序中遇到断点
- google-apps-script - 如何在 Google 电子表格中创建自定义的时间驱动触发器
- reactjs - 在 github repo 上使用 NPM 安装 React 依赖项
- symfony - 带有 redis 的 Symfony 应用程序在 Gitlab CI 中失败
- r - 使用 Shiny 写入和保存到 excel 文件
- ios - 如何将特定颜色转换为 HSV/RGB 标量值(通道 4)?