2012-01-03 19 views
10

Log4j kullanarak günlükleri yazan eski bir kitaplık kullanıyorum. Varsayılan log4j.properties dosyası, günlüğü konsola yönlendirir, ancak ana programımın bazı özel işlevlerinde, günlüğe kaydetmeyi (tüm sınıflardan) devre dışı bırakmak istiyorum. Java kodundan log4j günlüğü nasıl kapatılır

denedim bu:

"BasicImplementation" giriş yapmak ana sınıftan biridir, ama işe yaramadı
Logger.getLogger(BasicImplementation.class.getName()).setLevel(Level.OFF); 

- günlükleri hala konsola yazılır.

log4j.rootLogger=off, stdout 
#log4j.logger.ac.biu.nlp.nlp.engineml=info, logfile 
#log4j.logger.org.BIU.utils.logging.ExperimentLogger=warn 

... 

Ref: Eğer log4j.properties değiştirerek devre dışı İÇİN deneyebilirsiniz

log4j.rootLogger=warn, stdout 
log4j.logger.ac.biu.nlp.nlp.engineml=info, logfile 
log4j.logger.org.BIU.utils.logging.ExperimentLogger=warn 

log4j.appender.stdout = org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern = %-5p %d{HH:mm:ss} [%t]: %m%n 

log4j.appender.logfile = ac.biu.nlp.nlp.log.BackupOlderFileAppender 
log4j.appender.logfile.append=false 
log4j.appender.logfile.layout = org.apache.log4j.PatternLayout 
log4j.appender.logfile.layout.ConversionPattern = %-5p %d{HH:mm:ss} [%t]: %m%n 
log4j.appender.logfile.File = logfile.log 
+1

Size kök logger devre dışı bırakmak zorunda, ancak önce 'log4j.properties' /' log4j.xml' gönderin olasıdır. – MaDa

+0

Tamam, gönderdim –

cevap

18

Yani, kök dahil tanımlanan 3 kaydedicileri, var: Maalesef

log4j.rootLogger=warn, stdout 
log4j.logger.ac.biu.nlp.nlp.engineml=info, logfile 
log4j.logger.org.BIU.utils.logging.ExperimentLogger=warn 

, programlama yoluyla bunları devre dışı bırakmak için, kodda hepsini belirtmek gerekir:

Logger.getLogger("ac.biu.nlp.nlp.engineml").setLevel(Level.OFF); 
Logger.getLogger("org.BIU.utils.logging.ExperimentLogger").setLevel(Level.OFF); 
Logger.getRootLogger().setLevel(Level.OFF); 

Here's nasıl config dosyasında ayarlanmış olana sıfırlamak için. Eğer (sakin komut satırı aracı için benzeri) mükemmel sessizlik elde etmek istiyorsan

+0

Harika, işe yaradı! –

-1

aşağıdakileri ekleyin senin günlük dosyası

log4j.logger.com.class.with.package.BasicImplementation = off, logfiledata 

log4j.appender.logfiledata = ac.biu.nlp.nlp.log.BackupOlderFileAppender 
log4j.appender.logfiledata.append=false 
log4j.appender.logfiledata.layout = org.apache.log4j.PatternLayout 
log4j.appender.logfiledata.layout.ConversionPattern = %-5p %d{HH:mm:ss} [%t]: %m%n 
log4j.appender.logfiledata.File = logfiledata.log 

Kayıttan çıkılırsa, yukarıdaki veriler durmazsa, en azından BasicImplementation sınıfındaki tüm verileri ayrı bir dosyaya kaydeder.

+0

-1. Rick'inki gibi. – MaDa

6

Sen, her zaman NullAppender kullanabilirsiniz

Logger.getRootLogger().setLevel(Level.OFF); 

java kodu

+1

Özelleştirilmiş günlükleyicileriniz varsa bu işe yaramaz. – Amos

9

herhangi günlüğünü devre dışı bırakmak için kullanabilirsiniz. Belki böyle

Logger.getRootLogger().removeAllAppenders(); 
Logger.getRootLogger().addAppender(new NullAppender()); 
+0

Teşekkürler, benim için mükemmel çalıştı :) – Ashwin

0

:

Logger.getRootLogger().shutdown();

İlgili konular