2012-12-13 13 views
6

Logback.groovy yoluyla yapılandırılmış logback'i groovy ile kullanamıyorum. bende logback yapılandırma dosyasını derler etmek groovy FooBar.groovy harika çalışır çalıştırmak ve benim komut çalışmadığında bir dizinde i örnek FooBar.groovy çağrısında bir komut dosyası ve dosya logback.groovy varsalogback.groovy ile yapılandırılmış logback kullanımı groovy ile

i zorunda logback için varsayılan xml yapılandırma dosyasına geri dönüş (logback.xml).

Bunu nasıl çalıştırabilirim? groovy somefiles.groovy'u arayabilir ve logback.groovy'yi yok sayılacak şekilde yapılandırılabilir miyim? Kendi sorunların için yardım

+1

Nasıl betik işe yaramaz? Sebebini açıkla. Komut dosyanızı çalıştırmak için doğru çözüm olduğunu düşünüyorum. .xml yapılandırmasına geri dönme. – Archer

cevap

11

sebeple

Teşekkür logback yapılandırma dosyası derlenmiş asla gerektiğidir. Logback ile çalışma zamanında GroovyShell veya benzer bir mekanizma üzerinden okunur.

Çözüm, proje ayarlarınıza bağlıdır.

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 

appender("CONSOLE", ConsoleAppender) { 
    encoder(PatternLayoutEncoder) { 
    pattern = "%-4relative [%thread] - %msg%n" 
    } 
} 
root(DEBUG, ["CONSOLE"]) 

Ben Gradle inşa atlanmış:

import org.slf4j.Logger 
import org.slf4j.LoggerFactory 

class Test { 
    static Logger LOG = LoggerFactory.getLogger(Test.class) 

    static void main(String[] args) { 
     LOG.debug("Test") 
    } 
} 

İkinci dosya src/main/resources/logback.groovy geçerli:

İlk dosya src/main/groovy/Test.groovy şudur: Bir proje için bir çözüm Maven Standard Directory Layout aşağıdaki Gradle ile inşa bulacaksınız ardından dosya (build.gradle).

Standart dizin düzeni, src/main/groovy'daki her dosyanın derlendiğini, src/main/resources'daki her şeyin sınıf yoluna dahil edildiğini garanti eder. Bu yüzden LogBack bu dosyayı çalışma zamanında bulabilir.

Güncelleştirme: Sorunu yeterince dikkatlice okumadım. Her iki dosya aynı dizinde olduğunda sorunu çözemedim ve bunu groovy Test.groovy aracılığıyla başlatıyorum. Bence bu mümkün değil. Groovy komutu daima geçerli dizinde ve verilen sınıf yolundaki tüm groovy dosyalarını derler.

+0

Sanırım doğru, her iki dosya aynı dizinde olduğunda bu durumu yönetmek mümkün değil, ilk bölümde groovy dsl içinde groovy ve bir logback yapılandırma dosyasının kullanımı için doğru bir yol açıkladı çünkü soru kabul olarak işaretledim. – res1