फ़ाइल का उपयोग करके सभी लॉग 4 जे आउटपुट को जल्दी से कैसे बंद किया जा सकता है log4j.properties?
जवाबों:
यदि आप प्रोग्रामेटिक रूप से लॉगिंग बंद करना चाहते हैं तो उपयोग करें
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
log4j.rootLogger=OFF
आप उस स्तर को बंद कर सकते हैं जिसे सभी लॉगिंग से छुटकारा मिलना चाहिए। Log4j वेबसाइट के अनुसार, महत्व के क्रम में मान्य स्तर TRACE, DEBUG, INFO, WARN, ERROR, FATAL हैं। वहाँ एक अनिर्दिष्ट स्तर है जिसे OFF कहा जाता है जो FATAL की तुलना में उच्च स्तर है, और सभी लॉगिंग को बंद कर देता है।
आप कुछ भी नहीं (स्तर ऑफ) लॉग करने के लिए एक अतिरिक्त रूट लॉगर बना सकते हैं, ताकि आप रूट लॉगर को आसानी से स्विच कर सकें। यहाँ एक पोस्ट है जो आपको आरंभ करने के लिए है।
आप Log4J FAQ को भी पढ़ना चाह सकते हैं , क्योंकि मुझे लगता है कि सभी लॉगिंग को बंद करने से मदद नहीं मिल सकती है। यह निश्चित रूप से आपके ऐप को इतना अधिक गति नहीं देगा, क्योंकि लॉगिंग कोड को वैसे भी निष्पादित किया जाता है, उस बिंदु तक जहां log4j निर्णय लेता है कि उसे इस प्रविष्टि को लॉग करने की आवश्यकता नहीं है।
स्तर जो आप चाहते हैं उसे बदलें। (मैं Log4j2, संस्करण 2.6.2 का उपयोग कर रहा हूं)। यह सबसे सरल तरीका है, इसमें बदलाव करें<Root level="off">
उदाहरण के लिए: फ़ाइल log4j2.xml
विकास वातावरण
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<Console name="SimpleConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
<Loggers>
<Root level="info">
<AppenderRef ref="SimpleConsole"/>
</Root>
</Loggers>
</Configuration>
उत्पादन वातावरण
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<Console name="SimpleConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="off">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
<Loggers>
<Root level="off">
<AppenderRef ref="SimpleConsole"/>
</Root>
</Loggers>
</Configuration>
इसके अलावा, प्रोग्रामेटिक रूप से लॉगिंग बंद करना भी संभव है:
Logger.getRootLogger().setLevel(Level.OFF);
या
Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());
ये आयात का उपयोग करते हैं:
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.NullAppender;