log4j2

2013-06-04 8 views
6

में कक्षा के नाम से फ़िल्टर करें मैं log4j2 का उपयोग कर रहा हूं और मुझे नहीं पता कि मैं कक्षा के नाम से कैसे फ़िल्टर कर सकता हूं। मैंने RegexFilter के साथ प्रयास किया है लेकिन यह केवल टेक्स्ट संदेश फ़िल्टर करता है। पुराने लॉग 4j में टैग 'फ़िल्टर'log4j2

<filter class="aaaa.bbbb.cccc.ClassName"> 

कोई जानता है कि अब कैसे करना है?

अग्रिम धन्यवाद!

अद्यतन:

ठीक है, मैंने किया! मैं एक लकड़हारा को परिभाषित करने और विशेषता 'नाम' में वर्ग के नाम निर्धारित करने की आवश्यकता:

<loggers> 
    <logger name="aaaa.bbbb.cccc.ClassName" additivity="false" level="info"> 
     <appender-ref ref="RollingFile" /> 
    </logger> 
    <root level="error"> 
     <appender-ref ref="RollingFile" /> 
    </root> 
</loggers> 

उत्तर

2

यह log4j में स्वचालित रूप से काम करता है अगर तुम वालों के लिए नामकरण परंपरा का पालन करें। अपने कोड में, अपने वर्ग के नाम के साथ वालों की घोषणा:

Logger logger = LogManager.getLogger(MyClass.class); 

लकड़हारा स्वचालित रूप से नाम fully.qualified.class.name.of.MyClass असाइन किया गया है।

छनन

नीचे दिए गए उदाहरण लॉग फिल्टर करने के लिए कैसे पता चलता है: अब, अपने विन्यास में आप क्या करने की छानने और रूटिंग इस पूरी तरह से योग्य नाम (या पैकेज नाम या पैकेज का पहला हिस्सा) का उपयोग कर सकते लॉगिंग करने वाले वर्ग के पैकेज के आधार पर घटनाएं: पैकेज में कक्षाओं द्वारा सभी DEBUG और TRACE स्तर लॉग ईवेंट com.other.company को अनदेखा कर दिया जाएगा, और पैकेज में कक्षाओं के लिए com.another.project केवल त्रुटि और FATAL लॉगिंग शामिल की जाएगी।

<Configuration status="warn"> 
    <Appenders> 
    <File name="MyFile" fileName="logs/my.log"> 
     <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> 
    </File> 
    </Appenders> 
    <Loggers> 

    <!-- drops all DEBUG and TRACE logging done by any class in this package --> 
    <Logger name="com.other.company" level="INFO" /> 

    <!-- log only ERROR and FATAL logging by classes in this package --> 
    <Logger name="com.another.project" level="ERROR" /> 

    <!-- by default, all log events are written to MyFile --> 
    <Root level="trace"> 
     <AppenderRef ref="MyFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 

रूटिंग

नीचे उदाहरण दिखाता है कि मार्ग लॉग ईवेंट को अलग करने के लिए लॉग इन करें वर्ग प्रवेश करने का पैकेज के आधार पर फ़ाइलों के लिए: पैकेज com.other.company में वर्गों द्वारा सभी प्रवेश के लिए लिखा नहीं की जाएगी my.log केवल other.log तक।

<Configuration status="warn"> 
    <Appenders> 
    <File name="MyFile" fileName="logs/my.log"> 
     <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> 
    </File> 
    <File name="OtherFile" fileName="logs/other.log"> 
     <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> 
    </File> 
    </Appenders> 
    <Loggers> 
    <!-- all logging from this package and subpackages goes to OtherFile --> 
    <!-- Note: set additivity=false or logging will also go to the root logger --> 
    <Logger name="com.other.company" additivity="false"> 
     <AppenderRef ref="OtherFile"/> 
    </Logger> 
    <Root level="trace"> 
     <AppenderRef ref="MyFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 
संबंधित मुद्दे