как использовать logback, настроенный через logback.груви с Groovy
Я не могу использовать logback, настроенный через logback.груви с Groovy.
Если в каталоге у меня есть файл сценария, называемый, например, FooBar.groovy и файл logback.отличный
когда я бегу groovy FooBar.groovy groovy пытается компилировать файл конфигурации logback, и мой скрипт не работает, я должен вернуться к файлу конфигурации xml по умолчанию для logback (logback.XML.)
Как я могу это сделать? могу я позвонить groovy somefiles.groovy и настроить groovy для игнорирования Logback так.в Groovy?
Спасибо за помощь
2 ответов
причина ваших проблем заключается в том, что файл конфигурации logback никогда не должен компилироваться. Он читается во время выполнения из LogBack через GroovyShell или подобный механизм.
решение зависит от настроек проекта. Ниже вы найдете решение для сборки проекта с помощью ш вслед за Maven Стандартный Макет Каталога:
первый файл src/main/groovy/Test.groovy:
import org.slf4j.Logger
import org.slf4j.LoggerFactory
class Test {
static Logger LOG = LoggerFactory.getLogger(Test.class)
static void main(String[] args) {
LOG.debug("Test")
}
}
второй файл src/main/resources/logback.groovy:
import static ch.qos.logback.classic.Level.INFO
import static ch.qos.logback.classic.Level.DEBUG
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.ConsoleAppender
appender("CONSOLE", ConsoleAppender) {
encoder(PatternLayoutEncoder) {
pattern = "%-4relative [%thread] - %msg%n"
}
}
root(DEBUG, ["CONSOLE"])
Я опустил файл сборки Gradle (build.gradle).
стандартный макет каталога гарантирует, что каждый файл в src/main/groovy компилируется, в то время как все в src/main/resources включен в путь к классу. Таким образом, LogBack может найти этот файл во время выполнения.
обновление: недостаточно внимательно прочитал вашу проблему. Мне не удалось решить проблему, когда оба файла находятся в одном каталоге, и я запускаю его через groovy Test.groovy. Я думаю это невозможно. Команда groovy всегда компилирует все файлы groovy в текущем каталоге и в заданном пути к классам.
у меня была такая же проблема в среде Eclipse Greclipse (и пришел к этому вопросу как лучшая ссылка на проблему через Google). Он будет легко адаптироваться к другим Groovy средам,а также и основные принципы / настройки будут выполняться.
вот что нужно сделать/обеспечить:
Project -> Properties -> Java Build Path ...
-
-> Source -> Add Folderили проверьте правильность настройки- все соответствующие файлы должны быть в формате
Included(например(All)), а не вExcluded(например,(None)) модели -
src/main/groovy/(должен содержать ваши классные классы) -
src/test/resources/(гдеlogback.groovyпрямо под ним)
- все соответствующие файлы должны быть в формате
- убедитесь, что под
-> Output Foldersнаsrc/main/resourcesдоsrc/test/resourcesправоlogback.groovy(если у вас есть один для проверки) принимается в обычном режиме
Project -> Properties -> Groovy Compiler -> Groovy Script Folders ...
-
[ ] src/main/groovy/**/*.groovy(или аналогичный шаблон для ваших классов должен быть снят) -
[x] src/main/resources/**/*.groovy(или аналогичный шаблон для вашего нормальногоlogback.groovyнеобходимо проверить) -
[x] src/test/resources/**/*.groovy(или аналогичный шаблон для вашего тестаlogback.groovyнеобходимо проверить)
тест и нормальный logback.groovy должно работать этот путь.
в результате вы должны увидеть следующее скопирована с исходный ресурс для целевых папок:
target/classes/logback.groovytarget/test-classes/logback.groovy
Примечание: кроме того, если вы используете Groovy внутри ANT в Eclipse, все, что вам нужно сделать, это Windows -> Preferences -> Ant -> Runtime -> Classpath -> Ant Home Entries -> Add Variable... -> ${project_classpath} и logback.groovy также будет применяться должным образом:).
(После ${project_classpath} не похоже (всегда) экспортировать в указанном выше порядке, нам пришлось вручную Add Folder -> target/classes и двигаться выше других, чтобы заставить его работать с правой logback.groovy)