gpt4 book ai didi

groovy - Groovy 中的 Logback 配置和 Gradle/Idea 中的不同类路径

转载 作者:行者123 更新时间:2023-12-04 05:08:49 26 4
gpt4 key购买 nike

我正在使用 SLF4J 和 Logback 来登录 Groovy 应用程序,因此我还通过 Groovy configuration 配置了 logback .我的配置很简单,看起来像:

import static ch.qos.logback.classic.Level.INFO
import static ch.qos.logback.classic.Level.DEBUG

import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.ConsoleAppender
import ch.qos.logback.core.status.OnConsoleStatusListener

// always a good idea to add an on console status listener
statusListener(OnConsoleStatusListener)

// setting up appenders
appender('CONSOLE', ConsoleAppender) {
encoder(PatternLayoutEncoder) {
pattern = "%d [%thread] %-5level %logger - %msg%n"
}
}

// setting up loggers
logger("org.apache", INFO)
root(DEBUG, ['CONSOLE'])

然而,我遇到了 org.apache的问题。日志消息也发生在调试级别,这不应该根据上面的配置(我也尝试更改 looger 和 root 的顺序)。我发现从 IDEA 运行应用程序时根本没有加载配置。但是当我通过命令行启动它时(只是执行 gradlew run )一切正常。

问题一:有谁知道这里发生了什么?似乎从 IDEA 开始的类路径与从 gradlew 开始的类路径不同,并且还有另一个可用的 logback 配置文件。但是IDEA中的classpath只有java和gradle依赖。在我的选项中(只是从 here 中读取它) logback 应该首先查找 logback.groovy 并且我很确定我的文件是唯一的。

然后我尝试通过 online translator 将工作的 XML 配置转换为 Groovy .配置是一样的,但我注意到 logback 调试选项丢失了:

<configuration debug="true"> 
...
</configuration>

问题2:有谁知道如何通过 Groovy 启用 logback 调试? ( debug = true 不起作用)

完整的 Gradle 构建文件:

// Plugins
apply plugin: 'groovy'
apply plugin: 'application'
apply plugin: 'idea'

// Dependencies
configure(allprojects)
{
ext.groovy = '2.1.0'
ext.slf4jVersion = '1.7.2'
ext.logbackVersion = '1.0.9'
ext.apacheFluentHc = '4.2.3'
}

repositories {
mavenCentral()
}

configurations {
compile.exclude module: 'commons-logging'
}

dependencies {
// Groovy
compile "org.codehaus.groovy:groovy-all:${groovy}:indy"

// Logging
compile "org.slf4j:slf4j-api:$slf4jVersion"
compile "ch.qos.logback:logback-classic:$logbackVersion"
compile "org.slf4j:jcl-over-slf4j:$slf4jVersion"

// Apache HttpClient
compile "org.apache.httpcomponents:fluent-hc:$apacheFluentHc"
}

// Java options
sourceCompatibility = 1.7
targetCompatibility = 1.7
mainClassName = 'XXX'

// Groovy options
[compileGroovy.groovyOptions, compileTestGroovy.groovyOptions]*.with {
fork = true
optimizationOptions = [ indy: true, 'int': false]
encoding = 'UTF-8'
}

// Tasks
task wrap(type:Wrapper, description:"create a gradlew") {
gradleVersion = '1.4'
}

最佳答案

我解决了 问题 1 , logback.groovy只是没有找到,因此加载了默认配置。

当我在 IDEA 中执行应用程序时,我只运行了主类而不是 gradle run .我已经习惯了 Eclipse 中的这一点,其中 Maven 和 Eclipse 的输出路径是相同的。但 IDEA 和 Gradle 并非如此。而 IDEA 的输出路径是 out\production\<project> ,是build\classes\main对于 Gradle 和 IDEA,不会将资源复制到其输出路径。

现在我使用 gradle run在 IDEA 中,因此绕过 IDEA 构建。

问题 2 只是没有实现(Logback 1.0.11),没有用于调试的 DSL,参见 code .

关于groovy - Groovy 中的 Logback 配置和 Gradle/Idea 中的不同类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15153662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com