logback.xml и запуск приложения из JetBrains IDEA IDE

#intellij-idea #logback

#intellij-idea #возврат в систему

Вопрос:

Когда я разрабатываю приложение в IDEA, где я должен разместить logback.xml чтобы это повлияло на приложение?

Кажется, что при запуске / отладке IDEA не создает никаких jar и не вызывает Maven для создания чего-либо. Выполняет ли оно main () непосредственно из скомпилированного файла *.class? Если да, то куда я могу поместить logback.xml чтобы это возымело эффект?

Ответ №1:

logback.xml должно быть доступно в корневом каталоге вашего CLASSPATH. Когда вы запускаете свое приложение, полный путь к КЛАССУ печатается в самом начале. Когда я вставляю logback.xml в /src/main/resources (проект Maven), он работает без каких-либо проблем. Также присутствует его /src/test/resources с logback-test.xml именем.

Просто запустите:

 getClass().getClassLoader().getResource("/logback.xml");
  

И посмотрим, возвращает ли оно что-нибудь или null .

Если вы не работаете с проектом Maven, откройте Project structure (Ctrl Alt Shift S ) и добавьте в раздел «Модули logback.xml » папку, содержащую и пометьте ее как «Исходные файлы» (синий значок).

Комментарии:

1. Большое спасибо! Есть ли способ создать Maven place logback.xml рядом с jar, а не внутри него?

2. По умолчанию, если вы поместите какой-либо файл в тот же каталог, что и JAR, он не будет добавлен в CLASSPATH, поэтому Logback не увидит logback.xml там. Но, конечно, просто не помещайте его в /src/main/resources (и скопируйте его вручную, куда хотите). Если вы хотите иметь logback.xml доступ извне, чтобы иметь возможность быстро изменять конфигурацию, Logback поддерживает чтение свойств среды из коробки среди других возможностей.

3. Спасибо за это, это помогло мне войти в Postgres! После того, как я, наконец, разобрался, мой файл был назван backlog.xml и не logback.xml ха-ха!

4. @tomasz: Я хочу загрузить logback.xml из внешней папки. Это logback.xml будет общим для двух разных проектов, работающих на tomcat6 и weblogic10. не могли бы вы, пожалуйста, подсказать, как я могу это сделать. блуждаю по Сети, но не нашел никакого полезного решения: (

5. Хотя этот ответ слишком поздний для Sai, вы можете указать logback.xml путь в качестве параметра командной строки: -Dlogback.configurationFile=/path/to/config.xml

Ответ №2:

Мне нужно было перестроить проект (а не просто повторно запустить или перекомпилировать проект). Изменение srcmainresourceslogback.xml не повлияло на обратный вход в систему, потому что загрузчик классов собирает logback.xml это находится в target/ папке, а не в /src папке. Это имеет смысл, поскольку целью является среда запуска. Следовательно, для передачи нового XML-файла в target требуется сборка.