2010-11-27 31 views
5

Harici bir kütüphane kullanarak bir java programım var. Ana program, iletilerini günlüğe kaydetmek için log4j kullanır ve kitaplık java.util.logging kullanır.java.util.logging bir dosyaya nasıl yönlendirilir?

Sorunum, dış kütüphaneden gelen günlük mesajlarının ve ana programın konsolda karıştırılmasıdır.

Dış kütüphaneden tüm günlük mesajlarını bir dosyaya yeniden yönlendirmek istiyorum. Ben logging.properties dosyası ile bunu yapmaya çalıştı: konsolda çıkıp duran Maalesef dış kütüphaneden günlük mesajları

System.setProperty("java.util.logging.config.file", "logging.properties"); 

:

handlers= java.util.logging.FileHandler 
.level= INFO 
java.util.logging.FileHandler.pattern = foo.log 
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 

Bu dosya ile başlatılır. java.util.logging adresinden gelen günlük iletilerini durdurmak için slf4j gibi bir şey kullanmalı mıyım?

Zaman ayırdığınız için teşekkür ederiz.

+0

http://stackoverflow.com/questions/751736/how-to-get-java-logger-output-to-file-by-default adresinin kopyası –

cevap

11

Programlarımdan birinden bazı kodlar. Bu ayrıca otomatik rotasyon yapar. Yapı sınıfı, özellik dosyalarından okuyan benim. Bunu kendi değerlerinizle değiştirebilirsiniz.

Logger rootLogger = Logger.getLogger(""); 
logHandler = new FileHandler(config.getLogFile(), 
          config.getLogRotateSize()*1024*1024, 
          config.getLogRotateCount(), false); 
logHandler.setFormatter(new SimpleFormatter()); 
logHandler.setLevel(Level.INFO); 
rootLogger.removeHandler(rootLogger.getHandlers()[0]); 
rootLogger.setLevel(Level.INFO); 
rootLogger.addHandler(logHandler); 

Not: Bu, tek başına bir program içindir. Herhangi bir uygulama sunucusu, kendi günlük yapılandırma araçlarına sahiptir. Program, dinamik bir hata ayıklama modu isteniyorsa, biçimlendiriciyi ve seviyedeki seviyeleri de değiştirebilir.

+0

Vay canına, bu kusursuz çalıştı! – gulbrandr

İlgili konular