#java
#java
Вопрос:
У меня есть проект, который считывает log4j.properties, где файл журнала называется body.log , и у этого проекта есть зависимость, которая также имеет log4j.properties, где файл журнала — dependency.log .
Когда я запустил проект, я заметил, что оба журнала создаются в tomcat. Но только зависимость.в журнале есть содержимое, а другой пустой. Почему так? Спасибо.
РЕДАКТИРОВАТЬ: веб-приложение имеет контроллер, печатающий журналы в зависимости.регистрируйте, как настроено в dependency log4j.properties. Веб-приложение имеет log4j.properties, хотя оно фактически не используется.
2-е РЕДАКТИРОВАНИЕ: в войне web.xml , log4j настроен как:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:conf/log/log4j-dev.properties</param-value>
</context-param>
но у этого проекта нет src/main/resources/conf/log/log4j-dev.properties . Однако проект зависимостей имеет такой файл. Хотя я думал, что проект должен жаловаться на «нет такого файла» вместо того, чтобы находить этот файл в одной зависимости, в противном случае с точки web.xml , это было бы похоже на слияние основного проекта и всех его зависимостей.
Ответ №1:
Если они считываются с пути к классу, по сути, случайным образом выбирается один из них. Вы должны предоставить свою собственную конфигурацию журнала для окончательного проекта.
Комментарии:
1. «предоставьте конфигурацию журнала для окончательного проекта». Это именно то, для чего у меня body.properties. Это проект war, имеющий body.log, и классы в этой войне выполняются с dependency.log . Итак, как предоставить «окончательную конфигурацию проекта»?
2.@Tiina A
log4j.properties
непосредственно в вашей войне должен иметь приоритет над любым in jars, упакованным внутри него.3. Привет, пожалуйста, прочитайте 2-е редактирование. Теперь я ищу, почему это отличается от того, что вы сказали, и я получил более странные явления 🙂