Bir dosya kullanarak tüm Log4J çıktılarını nasıl hızlı bir şekilde kapatabilirsiniz log4j.properties
?
Yanıtlar:
Programlı olarak günlük kaydını kapatmak istiyorsanız şunu kullanın:
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
Seviyeyi, tüm kayıtlardan kurtulacak şekilde KAPALI olarak değiştirebilirsiniz. Log4j web sitesine göre, önem sırasına göre geçerli seviyeler TRACE, DEBUG, INFO, WARN, ERROR, FATAL'dır. KAPALI adında, FATAL'den daha yüksek bir düzey olan ve tüm günlük kaydını kapatan bir belgelenmemiş düzey vardır .
Ayrıca hiçbir şey kaydetmemek için fazladan bir kök kaydedici oluşturabilirsiniz (seviye KAPALI), böylece kök kaydedicileri kolayca değiştirebilirsiniz. İşte buna başlaman için bir gönderi .
Ayrıca Log4J SSS bölümünü de okumak isteyebilirsiniz , çünkü bence tüm günlük kayıtlarını kapatmak işe yaramayabilir . Uygulamanızı kesinlikle bu kadar hızlandırmayacaktır, çünkü log4j'nin bu girişi kaydetmesine gerek olmadığına karar verene kadar günlük kaydı kodu çalıştırılır.
Seviyeyi istediğiniz şeye değiştirin. (Log4j2, sürüm 2.6.2 kullanıyorum). Bu en basit yol,<Root level="off">
Örneğin: Dosya log4j2.xml
Geliştirme ortamı
<?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>
Üretim ortamı
<?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>
Ek olarak, günlüğe kaydetmeyi programlı olarak kapatmak da mümkündür:
Logger.getRootLogger().setLevel(Level.OFF);
Veya
Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());
Bunlar ithalatı kullanır:
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.NullAppender;