2015-08-04 4 views
8

Я смешиваю Groovy и Java в своем приложении Spring-boot. Контроллеры останова и доступ к данным записываются в Groovy. Конфигурации в основном в Java.Spring boot + Groovy + logback.groovy

Согласно документации по журналу, если в пути к классам есть файл logback.groovy, он должен быть выбран раньше logback.xml. Однако в моем случае работает только logback.xml.

Я запускаю приложение как приложение для запуска спринта.

Кроме того, стоит отметить, что весной предлагают наследовать некоторые настройки журналирования, как показано ниже

<configuration> 
    <include resource="org/springframework/boot/logging/logback/base.xml"/> 
    <logger name="org.springframework.web" level="DEBUG"/> 
</configuration> 

Там нет никакого способа сделать это в Groovy конфигурации.

build.gradle:

dependencies { 
    compile("org.springframework.boot:spring-boot-starter-web") 
    compile("org.springframework:spring-jdbc") 
    compile("com.h2database:h2") 
    compile("org.hsqldb:hsqldb") 
    testCompile("junit:junit") 
    compile('org.codehaus.groovy:groovy-all:2.3.10') 
    testCompile('org.codehaus.groovy.modules.http-builder:http-builder:0.5.0-RC2') 
    compile('org.slf4j:slf4j-simple:1.6.1') 
} 

sourceSets { 
    main { 
     groovy { 
      srcDirs = ['src/main/groovy', 'src/main/java'] 
     } 
     java { 
      srcDirs = [] 
     } 
    } 
    test { 
     groovy { 
      srcDirs = ['src/test/groovy', 'src/test/java'] 
     } 
     java { 
      srcDirs = [] 
     } 
    } 
} 

ответ

3

Во-первых, ваш build.gradle выглядит странно для меня:

  • не включают в ваших sourceSets опций в spring-boot-gradle-plugin
  • вы определяете параметры, которые являются значения по умолчанию для плагина Groovy, см. Project layout
  • Примечание: даже если вы смешиваете java-файл d groovy файлы вам не нужно их разделить (вы можете, если хотите). Я обычно держу их обоих в справочной папке.
  • в вашем dependencies разделе вы используете простые зависимости вместо Spring Boot starters (см также reference doc)
  • У вас есть 2 зависимостей DB (H2 и HSQL)

Попробуйте создать образец проекта с Spring Initializr - переключатель до полной версии. Ваш build.gradle будет выглядеть

buildscript { 
    ext { 
     springBootVersion = '1.5.1.RELEASE' 
    } 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    } 
} 

apply plugin: 'groovy' 
apply plugin: 'org.springframework.boot' 

jar { 
    baseName = 'demo' 
    version = '0.0.1-SNAPSHOT' 
} 

sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'org.springframework.boot:spring-boot-starter' 
    compile 'org.springframework.boot:spring-boot-starter-logging' 
    compile 'org.springframework.boot:spring-boot-starter-jdbc' 
    compile 'org.codehaus.groovy:groovy' 
    compile 'com.h2database:h2' 

    testCompile 'org.springframework.boot:spring-boot-starter-test' 
    testCompile 'org.codehaus.groovy.modules.http-builder:http-builder:0.5.0-RC2' 
} 

При такой конфигурации logback.groovy должен работать. Для конкретных проблем просто отправьте свой logback.groovy. Но, как вы уже отметили, Groovy config не является полноценным гражданином. Когда вы включаете стартер spring-boot-starter-logging, вы также можете расширить стандартную конфигурацию ведения журнала с помощью logback-spring.groovy или logback-spring.xml.

Для полного контроля вы должны использовать XML-конфигурацию и для небольших проектов, я перестал использовать logback.groovy и вместо того, чтобы просто конфиг журналирования стартера через некоторые настройки в application.properties см Custom log configuration.

E.g. некоторые настройки для application.properties с бревнами с цветными колоннами (все платформы, кроме окон < 10 и в IDEA даже под окнами < 10):

logging.file = logs/jira.log 
spring.output.ansi.enabled = DETECT 
logging.level.root = INFO 
logging.level.org.apache.http = WARN 
Смежные вопросы