2015-08-04 30 views
8

Ich mische Groovy und Java in meiner Spring-Boot-Anwendung. Rest-Controller und Datenzugriff wird in Groovy geschrieben. Konfigurationen sind hauptsächlich in Java.Spring boot + Groovy + logback.groovy

Laut Logback-Dokumentation sollte Logback.roovy-Datei im Klassenpfad vor logback.xml ausgewählt werden. Allerdings funktioniert nur logback.xml in meinem Fall.

Ich benutze die App als Sprint-Boot-Anwendung.

Außerdem ist es wert, dass der Frühling unter Hinweis darauf deuten darauf hin, einige der Logging-Konfiguration zu erben wie unten

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

Es gibt keine Möglichkeit, dies in Groovy Config zu tun.

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 = [] 
     } 
    } 
} 

Antwort

3

Zuerst Ihr build.gradle sieht mir seltsam:

  • Sie beinhalten nicht die spring-boot-gradle-plugin
  • in Ihrem sourceSets Optionen, die Sie Einstellungen definieren, die das sind Standardwerte des Groovy-Plugins, siehe Project layout
  • Hinweis: Auch wenn Sie Java mischen d groovy Dateien müssen Sie nicht trennen (Sie können, wenn Sie wollen). Normalerweise halte ich beide im groovigen Verzeichnis.
  • in Ihrem dependencies Abschnitt können Sie einfach Abhängigkeiten statt Spring Boot starters (siehe auch reference doc)
  • Sie haben 2 DB Abhängigkeiten (H2 und HSQL)

Versuchen werden mit einem Beispielprojekt mit Spring Initializr zu erstellen - Schalter zur Vollversion. Ihre build.gradle würde aussehen wie

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

Mit dieser Konfiguration logback.groovy funktionieren sollte. Für bestimmte Probleme poste einfach deine logback.groovy. Aber wie Sie bemerkt haben, ist die Groovy-Konfiguration kein vollwertiger Bürger. Wenn Sie den Starter spring-boot-starter-logging einschließen, können Sie auch die Standardprotokollierungskonfiguration mit logback-spring.groovy oder logback-spring.xml erweitern.

Für die volle Kontrolle müssen Sie die XML-Konfigurations verwenden und für kleine Projekte habe ich aufgehört logback.groovy verwenden und stattdessen Config nur die Logging-Starter über einige Einstellungen im application.properties finden Custom log configuration.

z. einige Einstellungen für application.properties mit Logs mit farbigen Säulen (alle Plattformen außer Windows < 10 und in IDEA auch unter Windows < 10):

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