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

Groovy中的Logback配置和Gradle/Idea中的不同类路径,groovy,intellij-idea,logback,Groovy,Intellij Idea,Logback,我使用SLF4J和Logback登录Groovy应用程序,因此我还通过配置Logback。我的配置非常简单,如下所示: 导入静态ch.qos.logback.classic.Level.INFO 导入静态ch.qos.logback.classic.Level.DEBUG 导入ch.qos.logback.classic.encoder.PatternLayoutCoder 导入ch.qos.logback.core.ConsoleAppender 导入ch.qos.logback.core.s

我使用SLF4J和Logback登录Groovy应用程序,因此我还通过配置Logback。我的配置非常简单,如下所示:

导入静态ch.qos.logback.classic.Level.INFO
导入静态ch.qos.logback.classic.Level.DEBUG
导入ch.qos.logback.classic.encoder.PatternLayoutCoder
导入ch.qos.logback.core.ConsoleAppender
导入ch.qos.logback.core.status.OnConsollStatusListener
//添加控制台状态侦听器始终是一个好主意
statusListener(OnConsoleStatusListener)
//设置附加器
追加器('CONSOLE',ConsoleAppender){
编码器(模式编码器){
pattern=“%d[%thread]-5级%logger-%msg%n”
}
}
//设置记录器
记录器(“org.apache”,信息)
根目录(调试,['CONSOLE'])
但是,我遇到了一个问题,
org.apache
日志消息也发生在调试级别,这不应该与上面的配置一致(我还尝试更改looger和root的顺序)。我发现从IDEA运行应用程序时根本没有加载配置。但当我通过命令行启动它时(只执行
gradlew run
),一切都正常

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

然后,我尝试通过。配置完全相同,但我注意到logback调试选项丢失:


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

完整的Gradle生成文件:

//插件
应用插件:“groovy”
应用插件:“应用程序”
应用插件:“创意”
//依赖关系
配置(所有项目)
{
ext.groovy='2.1.0'
ext.slf4jVersion='1.7.2'
ext.logbackVersion='1.0.9'
ext.apacheFluentHc='4.2.3'
}
存储库{
mavenCentral()
}
配置{
compile.exclude模块:“commons日志记录”
}
依赖关系{
//棒极了
编译“org.codehaus.groovy:groovy all:${groovy}:indy”
//伐木
编译“org.slf4j:slf4j api:$slf4jVersion”
编译“ch.qos.logback:logback classic:$logbackVersion”
编译“org.slf4j:jcl-over-slf4j:$slf4jVersion”
//ApacheHttpClient
编译“org.apache.httpcomponents:fluent hc:$apacheFluentHc”
}
//Java选项
sourceCompatibility=1.7
targetCompatibility=1.7
mainClassName='XXX'
//Groovy选项
[compileGroovy.groovyOptions,compileTestGroovy.groovyOptions]*.with{
fork=true
optimizationOptions=[indy:true,“int”:false]
编码='UTF-8'
}
//任务
任务包装(类型:包装,描述:“创建一个渐变”){
gradleVersion='1.4'
}

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

当我在IDEA中执行应用程序时,我只是运行main类,而不是
gradle运行
。我在Eclipse中已经习惯了这一点,其中来自Maven和Eclipse的输出路径是ident。但IDEA和Gradle的情况并非如此。IDEA的输出路径为
out\production\
,而Gradle的输出路径为
build\classes\main
,IDEA不会将资源复制到其输出路径

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

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