में विशेष स्तर फ़िल्टर करें, विशिष्ट स्तर को एपेंडर के साथ लॉग इन करने के लिए मुझे किस फ़िल्टर का उपयोग करना चाहिए? उदाहरण के लिए:Log4j2 apender
जावा:
LOGGER.debug("Debug message");
LOGGER.info("Info message");
LOGGER.warn("Warn message");
LOGGER.error("Error message");
LOGGER.fatal("Fatal message");
log4j2.xml:
<Configuration>
<Appenders>
<Console name="info-stdout-message">
<PatternLayout pattern="[%logger{36}] %message %n" />
<ThresholdFilter level="info"/>
</Console>
<Console name="detailed-stdout-message">
<PatternLayout pattern="[%logger{36}] [%level] %message %n" />
</Console>
<File name="file-appender" fileName="logs/debug.log">
<PatternLayout pattern="%d{HH:mm:ss dd.mm} [%t] [%-5level] %logger{36} - %msg %n" />
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="file-appender" level="debug" />
<AppenderRef ref="info-stdout-message" level="info"/>
<AppenderRef ref="detailed-stdout-message" level="info"/>
</Root>
</Loggers>
</Configuration>
फ़ाइल उत्पादन ठीक है, लेकिन कंसोल में मैं इस तरह के परिणाम:
[application.Main] [INFO] Info message
[application.Main] Info message
[application.Main] [WARN] Warn message
[application.Main] Warn message
[application.Main] [ERROR] Error message
[application.Main] Error message
[application.Main] [FATAL] Fatal message
[application.Main] Fatal message
लेकिन मैं केवल INFO संदेशों को आउटपुट करने के लिए info-stdout-message
एपेंडर की आवश्यकता है, जबकि detailed-stdout-message
सभी EXEPT जानकारी आउटपुट करने के लिए। तो कंसोल आउटपुट इस तरह दिखना चाहिए:
[application.Main] Info message
[application.Main] [WARN] Warn message
[application.Main] [ERROR] Error message
[application.Main] [FATAL] Fatal message
फ़िल्टर सम्मान स्तर विरासत को रोकने के तरीके को कैसे नहीं ढूंढ सकता है। क्या इसे करना संभव है?
क्या कॉन्फ़िगरेशन फ़ाइल को फ़िल्टरिंग स्तर सेट करने के बजाय प्रोग्रामेटिक रूप से ऐसा करने का कोई तरीका है? – testerjoe2