Spring boot + Groovy + logback.groovy

时间:2015-08-04 09:42:59

标签: groovy spring-boot logback logback-groovy

我在Spring-boot应用程序中混合使用Groovy和Java。 Rest控制器和数据访问是用Groovy编写的。配置主要是Java。

根据logback文档,如果类路径中有logback.groovy文件,则应该在logback.xml之前选择它。但是,在我的情况下只有logback.xml正常工作。

我正在运行应用程序作为sprint-boot-application。

另外,值得注意的是,spring建议继承一些日志配置,如下所示

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

1 个答案:

答案 0 :(得分:3)

首先,您的background-size对我来说很奇怪:

  • 您不包含build.gradle
  • 您在spring-boot-gradle-plugin选项中的
  • 定义了Groovy插件的默认值设置,请参阅Project layout
  • 注意:即使你混合了java和groovy文件,你也不必将它们分开(如果你愿意,你可以)。我通常会将它们保存在groovy目录中。
  • 您在sourceSets部分中使用简单依赖关系代替Spring Boot starters
  • (另请参阅reference doc
  • 您有2个数据库依赖项(H2和HSQL)

尝试使用Spring Initializr创建示例项目 - 切换到完整版。您的dependencies看起来像

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。但正如您所指出的,Groovy配置并不是一个完整的公民。当您加入logback.groovy启动器时,您还可以使用spring-boot-starter-logginglogback-spring.groovy扩展标准日志记录配置。

要获得完全控制权,您必须使用XML配置,对于我停止使用logback-spring.xml的小项目,而只是通过logback.groovy中的某些设置配置日志记录启动器,请参阅Custom log configuration

E.g。 application.properties的一些设置,其中包含带有彩色列的日志(除了windows&lt; 10以外的所有平台,甚至在Windows&lt; 10下的IDEA中):

application.properties