Использование Logback, но Log4j начал показывать WARN no Appenders
Я использую logback для моего ведения журнала, но он работает, однако; на днях я начал получать предупреждение
log4j: WARN Для журнала не найдено ни одного приложения (org.apache.axis.i18n.ProjectResourceBundle).
log4j: WARN Пожалуйста, правильно инициализируйте систему log4j.
Я не использую log4j, и я никогда не был с этим проектом.
У меня есть logback.xml в папке моих ресурсов.
Любые идеи о том, почему это предупреждение появилось?
Ответы
Ответ 1
Вы должны использовать библиотеку, которая использует log4j. Можете ли вы опубликовать больше о своем проекте?
Вероятно, вы должны просто поместить мост log4j в путь к классам. Подробнее здесь:
http://www.slf4j.org/legacy.html
Банку, которую вы хотите изучить, - log4j-over-slf4j. Он перекроет log4j API, чтобы на самом деле сделать вызовы для вашей реализации slf4j API (в вашем случае - logback).
Если вы используете Maven для создания своего проекта, тогда это может быть так же просто, как положить
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.7</version>
</dependency>
в зависимостях.
Исключение библиотеки (если необходимо) было бы сделано таким образом (это предполагает, что мы говорим о транзитивной зависимости от упомянутой вами банки):
<dependency>
<groupId>org.swift.common</groupId>
<artifactId>jira-soap</artifactId>
<version>4.4.0</version>
<exclusions>
<exclusion>
<groupId>...</groupId>
<artifactId>...</artifactId>
</exclusion>
</exclusions>
</dependency>
Ответ 2
Пришло время узнать, так как сообщение было log4j: WARN Для журнала не найдено ни одного приложения
Я попытался исключить log4j, и я попробовал log4j-over-slf4j.
Затем я запустил mvn dependency: tree и, наконец, узнал, что mye commons-configuration фактически использует commons-logging
[INFO] +- commons-configuration:commons-configuration:jar:1.9:compile
[INFO] | \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.0.13:compile
[INFO] | +- ch.qos.logback:logback-core:jar:1.0.13:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.7.5:compile
[INFO] +- org.slf4j:log4j-over-slf4j:jar:1.7.6:compile
[INFO] \- org.apache.commons:commons-lang3:jar:3.1:compile
Это стало для меня решением.
<!-- logging with logback (and slf4j)-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
</dependency>
<!-- had a dep in commons-configuration -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.6</version>
</dependency>