2012-07-04 28 views
5

Ben bir günlük özelliğine sahiptir tüm sınıflara bir Log4J Logger (veya genelliği durumunda herhangi sınıfı) enjekte etmek istiyorum:Groovy Bağımlılık Enjeksiyon

def log 

Bu işlem otomatik olarak Grails yapılır. Ben sıradan groovy uygulamalarda aynı özelliklere sahip olmak istiyorum, src altında tüm groovy dosyaları için söyleyebiliriz. Log4j ile uzmanlık alanı, logger'ın oturum açacak sınıfı bilmesi gerektiğidir. (Logger.getLogger(Class clazz))

Bunu nasıl başarabilirim?

cevap

11

Groovy 1.8'de @Logannotation added gördünüz mü?

+0

Müthiş eşdeğerdir yaratır! Bunu kaçırmış olmalıyım. Siz gerçekten orada iyi iş çıkardınız! Teşekkürler. – matcauthon

+0

Aslında, bunu yazarken, log4j ve slf4j için ek açıklama [görünüyor] (https://jira.codehaus.org/browse/GROOVY-5557) [bozuldu] (https: //jira.codehaus. org/browse/GROOVY-5574) Groovy 2.0 içinde ... –

+1

Bir bakmış ve bir sınıf yolu sorunu gibi görünüyor .. log4j scriptler yürütüldüğünde classpath olduğu sürece, ek açıklama düzgün çalışmalıdır :-D –

3

Groovy, bu konuda sınıfta @Log4j annotation'u kullanarak yerel destek sağlar. Bu, söz konusu sınıf olarak aynı adla Log4J Kaydediciye bir log alan işaret, yani .:

package com.example 
import groovy.util.logging.Log4j 

@Log4j 
public class LogExample { 
} 

package com.example 
public class LogExample { 
    private static final Logger log = Logger.getLogger(LogExample.class) 
} 
İlgili konular