我正在使用SLF4J和Logback來登錄Groovy應用程序,因此我還通過Groovy configuration配置了logback。我的配置是很容易的,看起來像:Groovy中的Logback配置和Gradle/Idea中的不同類路徑
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和根)。我發現從IDEA運行應用程序時根本沒有加載配置。但是當我通過命令行啓動它時(只是執行gradlew run
)一切正常。
問題1:有人知道這裏會發生什麼嗎?看起來從IDEA開始的類路徑與從gradlew開始的類路徑不同,並且還有另一個可用的logback配置文件。但IDEA中的類路徑只是java和gradle的依賴關係。在我的opionion中(剛剛從here中讀到)logback應該首先查找logback.groovy,並且我確信我的文件是唯一的。
然後我嘗試通過online translator將工作的XML配置轉換爲Groovy。這個配置是一樣的,但我注意到的logback調試選項丟失:
<configuration debug="true">
...
</configuration>
問題2:有誰知道如何通過Groovy中的logback啓用調試? (debug = true
不工作)
完整的搖籃構建文件:
// 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'
}