Spring boot + Groovy + logback.groovy



我在我的Spring-boot应用程序中混合了Groovy和Java。其余的控制器和数据访问是用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 = []
        }
    }
}

首先,你的build.gradle看起来很奇怪:

  • 不包含spring-boot-gradle-plugin
  • 在你的sourceSets选项中,你定义的设置是Groovy插件的默认值,参见项目布局
  • 注意:即使你混合了java和groovy文件,你也不必把它们分开(如果你想的话你可以分开)。我通常把它们都放在groovy目录中。
  • 在你的dependencies部分,你使用简单的依赖关系,而不是春季启动启动器(另见参考文档)
  • 你有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配置并不是一个完整的公民。当您包含spring-boot-starter-logging启动器时,您还可以使用logback-spring.groovylogback-spring.xml扩展标准日志配置。

为了完全控制,你必须使用XML配置,对于小项目,我不再使用logback.groovy,而是通过application.properties中的一些设置配置日志启动器,参见自定义日志配置。

application.properties的一些设置,带有彩色列的日志(所有平台,除了windows <10 .在IDEA中,甚至在windows下<10):

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

最新更新