Удалите Log4j и используйте Logback - PullRequest
0 голосов
/ 25 мая 2018

Можно ли использовать 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 logger.

    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 даже не был найден.

Еще одна дополнительная информация заключается в том, что, когда я запускаю тесты, которые существуют в одном из тех же проектов, что и в приведенных ниже приложениях, приложение работает нормально и успешно выполняет вход в систему.но запуск узлов не дает.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Зависимость от log4j в Corda Core удаляется этим PR, который будет в следующем основном выпуске Corda: https://github.com/corda/corda/pull/3257.

Однако я бы повторил взгляды Дазрафа на лучшие практики здесь.

0 голосов
/ 29 мая 2018

Лучшая практика для выбора каркаса ведения журналов заключается в том, что он должен быть определен на уровне приложения , а не на уровне библиотеки (cordapp).

В случае с сетевыми приложениями следует использовать API SLF4J и оставить его на время выполнения (corda.jar), чтобы выбрать подходящую привязку.corda.jar использует реализацию log4j.Возможно, вам нужно поднять проблему на github для возможности переключения поставщиков журналов.

...