8

我在我的 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 配置中没有办法做到这一点。

构建.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 = []
        }
    }
}
4

1 回答 1

3

首先,你build.gradle对我来说看起来很奇怪:

  • 你不包括spring-boot-gradle-plugin
  • 在您的sourceSets选项中定义设置,这些设置是 Groovy 插件的默认值,请参阅项目布局
  • 注意:即使您混合使用 java 和 groovy 文件,您也不必将它们分开(如果您愿意,可以这样做)。我通常将它们都保存在 groovy 目录中。
  • 在您的dependencies部分中,您使用的是简单的依赖项而不是Spring Boot 启动器(另请参见参考文档
  • 您有 2 个数据库依赖项(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
于 2017-02-20T17:32:04.853 回答