2012-07-04 15 views
5

chcę wstrzyknąć Log4j Logger (lub w przypadku ogólności każda klasa) do wszystkich moich klas, które ma właściwość dziennika:Groovy Dependency Injection

def log 

Odbywa się to automatycznie w Grails. Chcę mieć tę samą funkcję w zwykłych, groźnych aplikacjach, powiedzmy o wszystkich groovych plikach pod numerem src. Specjalnością Log4j jest to, że program rejestrujący musi znać klasę do zalogowania. (Logger.getLogger(Class clazz))

Jak mogę to osiągnąć?

Odpowiedz

11

Czy widziałeś @Logannotation added w Groovy 1.8?

+0

niesamowite! Musiałem tego nie zauważyć. Naprawdę robicie tam dobrą robotę! Dzięki. – matcauthon

+0

Faktycznie, w chwili pisania tego, adnotacja dla log4j i slf4j [wydaje się] (https://jira.codehaus.org/browse/GROOVY-5557) być [zerwana] (https: //jira.codehaus. org/browse/GROOVY-5574) w Groovy 2.0 ... –

+1

Zajrzałem do tego i wydaje się, że jest to kwestia klasy klasu. Tak długo, jak log4j znajduje się w ścieżce klas podczas wykonywania skryptów, adnotacja powinna działać dobrze :-RE –

3

Groovy zapewnia natywne wsparcie dla tego przy użyciu klasy @Log4j annotation. Stwarza to pole wskazujące log do LOG4J Logger o takiej samej nazwie jak klasa w pytaniu, tj .:

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

@Log4j 
public class LogExample { 
} 

jest odpowiednikiem

package com.example 
public class LogExample { 
    private static final Logger log = Logger.getLogger(LogExample.class) 
} 
Powiązane problemy