2012-07-04 17 views
5

मैं अपने सभी वर्गों के एक लॉग संपत्ति है कि में एक log4j लॉगर (या व्यापकता के मामले में किसी भी वर्ग) इंजेक्षन करना चाहते हैं:ग्रूवी निर्भरता इंजेक्शन

def log 

यह स्वचालित रूप से Grails में किया जाता है। मैं सामान्य ग्रोवी ऐप में एक ही सुविधा रखना चाहता हूं, src के तहत सभी ग्रोवी फाइलों के लिए कहें। Log4j के साथ विशेषता यह है कि लॉगजर को उस क्लास को जानना आवश्यक है जो लॉग करना है। (Logger.getLogger(Class clazz))

मैं इसे कैसे प्राप्त कर सकता हूं?

उत्तर

11

क्या आपने @Logannotation added ग्रोवी 1.8 में देखा है?

+0

बहुत बढ़िया के बराबर है बनाता है! मेरे से वह छूट गया होगा। तुम लोग वास्तव में वहाँ एक अच्छी नौकरी करते हो! धन्यवाद। – matcauthon

+0

असल में, इसे लिखने के समय, log4j और slf4j के लिए एनोटेशन [लगता है] (https://jira.codehaus.org/browse/GROOVY-5557) होने के लिए [टूटा हुआ] (https: //jira.codehaus। संगठन/ब्राउज़/GROOVY-5574) ग्रोवी 2.0 में ... –

+1

इसमें एक नजर डाली गई थी, और यह एक क्लासपाथ मुद्दा प्रतीत होता है .. जब तक स्क्रिप्ट को निष्पादित करते समय log4j क्लासपाथ पर होता है, तो एनोटेशन को ठीक काम करना चाहिए :-D –

3

ग्रूवी इस वर्ग पर @Log4j annotation का उपयोग कर के लिए देशी समर्थन प्रदान करता है। इस सवाल में वर्ग के रूप में एक ही नाम के साथ Log4J लॉगर के लिए एक log क्षेत्र की ओर इशारा करते, यानी .:

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) 
} 
संबंधित मुद्दे