2009-06-02 24 views
11

hiçbir log4j çıktı ben birim testleri çalıştırdığınızda, üretilen tek günlük çıkış hazırda sınıflardan olanbenim Grails aşağıdaki log4j yapılandırma var Grails app

log4j = { 

    // Enable Hibernate SQL logging with param values 
    trace 'org.hibernate.type' 
    debug 'org.hibernate.SQL' 

    debug 'com.mycompany' 

    appenders { 
     console name: 'stdout', layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n') 
     file name: 'hibeFile', file: 'hibe.log', layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n') 
    } 

    // By default, messages are logged at the error level to both the console and hibe.log 
    root { 
     error 'stdout', 'hibeFile' 
     additivity = true 
    } 
} 

1,1 app. Kendi sınıflarım için, yani com.mycompany ad alanı altındakiler için neden günlük çıktısı üretilmediğini anlamıyorum. Gariptir ki, entegrasyon testleri çalıştırdığımda, log4j çıkışı beklendiği gibi. Bu olmadığı

DEBUG (member.InviteServiceTests): Calling getInvite with member (4517) 

Uyarı: Bir birim test için test raporu gidin ve "System.out" bağlantısını tıklayın, ben aşağıdaki biçimde benim günlük iletilerini görürseniz

log4j yapılandırmamda belirttiğimyle aynı desen.

debug 'com.mycompany' 

için: Ben den log4j yapılandırma değiştirirseniz Ayrıca

fatal 'com.mycompany' 

Hala deney raporunda ayıklama seviyesinde günlük mesajları bkz. Birim testlerini çalıştırırken kök logger geçersiz kılınmış gibi görünüyor? Ben ayrı logger kullanarak com.mycompany altında günlük sınıfları denedim ama bu oldukça inceliklerini açmadım herhangi bir fark

Teşekkür, Don

cevap

17

Don,

Eğer oturum açmaya çalışan sınıflar standart Grails sınıfları (domain, kontrolör, hizmet, vs.) vardır iseniz, böyle bir şey kullanmak gerekir:

log4j = { 

    // Logging warnings and higher for all of the app 
    warn 'grails.app' 
    // Logging infos and higher for all controllers 
    info 'grails.app.controller' 
    // Logging debug and higher for the BarService 
    debug 'grails.app.service.BarService' 

    appenders { 
    // ...as above... 
    }  
    root { 
    // ...as above... 
    } 
} 

Grails kullanım kılavuzuna de biraz daha açıklama yoktur bir birim testinde denetleyicinize bir logger enjekte etmek gerek section on logging.

-1

Don,

yapmak görünmüyor DSL'yi 1,1'de günlüğe kaydetme, ancak bu sizin için yararlı olabilir: Dinamik Günlüğe Ekleme Eklentisi, uygulamanız dolduğunda günlüğe kaydetme kanallarını açmanıza/kapatmanıza ve ayrıca Conf.groovy'ye yerleştirebileceğiniz bazı yapılandırmalar oluşturmanıza olanak tanır.

Bu yardımcı olur umarım. delegelerini giriş grails log4j için

9

olduğundan, -Dlog4j.debug kullanmak ve log4j (reference) nasıl yapılandırıldığını görebiliyorum. Belki başka bir dosya alınır.


1.1.x. en az 1.2 yöneliktir günlük tutma biri critical bug fix ancak vardır Yapılandırma sizinkiyle benzer. Belki de mesajlar farklı bir dosyada yanlış bir şekilde kaydediliyor mu?

0

:

mockLogging(<controller class name>, true) 

İkinci argüman hata ayıklama mesajlarını ve aşağıdakini yazmayı söylüyor.