【问题标题】:Spring boot + Groovy + logback.groovySpring Boot + Groovy + logback.groovy
【发布时间】:2015-08-04 09:42:59
【问题描述】:

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

【问题讨论】:

    标签: groovy spring-boot logback logback-groovy


    【解决方案1】:

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

    • 你不包括spring-boot-gradle-plugin
    • 在您的sourceSets 选项中定义作为Groovy 插件默认值的设置,请参阅Project layout
    • 注意:即使您混合使用 java 和 groovy 文件,您也不必将它们分开(如果您愿意,可以分开)。我通常将它们都保存在 groovy 目录中。
    • 在您的 dependencies 部分中,您使用的是简单依赖项而不是 Spring Boot starters(另请参阅 reference doc
    • 您有 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 中的一些设置配置日志记录启动器,请参阅 Custom log configuration

    例如application.properties 的一些设置,带有彩色列的日志(除了 windows

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      • 2014-07-04
      • 2015-01-07
      • 1970-01-01
      • 2014-06-09
      相关资源
      最近更新 更多