2015-08-04 10 views
8

Sto mixando Groovy e Java nella mia applicazione Spring-boot. I rest controller e l'accesso ai dati sono scritti in Groovy. Le configurazioni sono principalmente in Java.Spring boot + Groovy + logback.groovy

Come per la documentazione di logback, se esiste un file logback.groovy nel classpath, è necessario che venga selezionato prima di logback.xml. Tuttavia solo logback.xml funziona nel mio caso.

Sto eseguendo l'app come sprint-boot-application.

Inoltre, vale la pena notare che la primavera suggeriscono di ereditare alcune delle configurazione di registrazione, come mostrato di seguito

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

Non v'è alcun modo per fare questo in config 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 = [] 
     } 
    } 
} 

risposta

3

In primo luogo, la vostra build.gradle sembra strano per me:

  • non si include il spring-boot-gradle-plugin
  • nelle sourceSets opzioni di definire le impostazioni che sono la valori predefiniti del plugin Groovy, vedi Project layout
  • Nota: anche se si mescolano java e d file groovy non devi separarli (puoi farlo se vuoi). Li tengo entrambi nella directory di groovy.
  • nella vostra sezione dependencies si utilizza dipendenze semplici invece di Spring Boot starters (si veda anche la reference doc)
  • Hai 2 dipendenze DB (H2 e HSQL)

tenta di creare un progetto di esempio con Spring Initializr - Interruttore alla versione completa. Il tuo build.gradle sarebbe simile

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' 
} 

Con questa configurazione logback.groovy dovrebbe funzionare. Per problemi specifici, pubblica il tuo logback.groovy. Ma come hai notato, la configurazione di Groovy non è completa. Quando si include lo starter spring-boot-starter-logging, è anche possibile estendere la configurazione di registrazione standard con logback-spring.groovy o logback-spring.xml.

Per il controllo completo è necessario utilizzare la configurazione XML e per i progetti di piccole dimensioni ho smesso di usare logback.groovy e invece solo config il motorino di avviamento di registrazione tramite alcune impostazioni nel application.properties, vedere Custom log configuration.

E.g. alcune impostazioni per application.properties con i registri con colonne colorate (tutte le piattaforme tranne Windows < 10 e in IDEA anche sotto Windows < 10):

logging.file = logs/jira.log 
spring.output.ansi.enabled = DETECT 
logging.level.root = INFO 
logging.level.org.apache.http = WARN