Program Aracılığıyla Yapılandırma Log4j Kaydediciler
İlk kez SLF4J log4j
bağlama ile () kullanmaya çalışıyorum.
Farklı düzeylerde günlük ve farklı appenders mesajları bastıracak olan bir LoggerFactory tarafından döndürülen 3 farklı adlı Kaydediciler yapılandırmak istiyorum:
- Logger 1"
DailyRollingFileAppender
. hata AYIKLAMA ve ekler günlükleri "FileLogger - Logger 2 "TracingLogger" İZLEME ve
JmsAppender
. bir ekler günlükleri - 3 Logger "ErrorLogger" HATA ve
JmsAppender
farklı ekler kaydeder
Ayrıca programlı olarak (XML veya log4j.properties
Bir dosyayı farklı olarak Java, onları yapılandırılmış istiyorum.
Normalde, bazı önyükleme kodu Logger
s bir yerde, init()
bir yöntem gibi bu tanımlama olacağını düşünüyorum. Kullanmak istiyorum çünkü ancak, slf4j-log4j
, kaydediciler tanımlamak ve onları sınıf için kullanılabilir hale alabileceğim konusunda kafam karıştı.
Bilmiyoruminanıyorumbu benim kod SLF4J API kullanarak bu kaydediciler var olduğunu hiç bilmeyecek çünkü SLF4J temel amaca (yüzeysel olarak) aykırı bir durum. Benim kod için ayrı bir sınıf bulur log4j Kaydediciler onları sadece SLF4J API için normal çağrıları yapar.
Ama nasıl Java'da sınıf, bu log4j Kaydediciler Yapılandır...?!
CEVAP
/Log4j Appender kaldırmak için programlı olarak ekleyebilirsiniz:
ConsoleAppender console = new ConsoleAppender(); //create appender
//configure the appender
String PATTERN = "%d [%p|%c|%C{1}] %m%n";
console.setLayout(new PatternLayout(PATTERN));
console.setThreshold(Level.FATAL);
console.activateOptions();
//add appender to any Logger (here is root)
Logger.getRootLogger().addAppender(console);
FileAppender fa = new FileAppender();
fa.setName("FileLogger");
fa.setFile("mylog.log");
fa.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
fa.setThreshold(Level.DEBUG);
fa.setAppend(true);
fa.activateOptions();
//add appender to any Logger (here is root)
Logger.getRootLogger().addAppender(fa)
//repeat with all other desired appenders
Bir ınıt bunu yapmanı öneririm() bu her şeyden önce çalıştırılacak emin olabilirsiniz, bir yere,. Sonra kökü mevcut tüm appenders logger kaldırabilirsiniz
Logger.getRootLogger().getLoggerRepository().resetConfiguration();
ve kendi ekleyerek başlayın. Bu iş için elbette sınıf içinde log4j gerekir.
Açıklama:
Appenders eklemek ister Logger.getLogger(...)
herhangi alabilirsin. Ben sadece her şeyin altındaki diğer kategoriler diğer appenders aksi additivity bayrağı ayarlayarak yapılandırılmış sürece) aktarılan her şeyi idare edecek, çünkü kök logger aldı.
Günlüğü nasıl çalıştığını ve günlükleri hakkında daha fazla bilgi için read this manual yazılı olduğu karar olduğunu bilmek gerekir.
Kısacası:
Logger fizz = LoggerFactory.getLogger("com.fizz")
verdiğiniz kategori için bir logger "com.". fizz
Örneğin yukarıdaki bu her şeyi ile oturum root logger konsol ve dosya appender sevk edilecektir anlamına gelir.
Eğer bir appender eklerseniz
Logger.getLogger("com.") fizz.addAppender(newAppender)
sonra fizz
günlük diğer tarafından yürütülecek kök logger gelen appenders ve newAppender
.
Yapılandırma ile Zararlılarına oluşturmanız yok, sadece sistem tüm olası kategoriler için işleyicileri sağlar.
Nasıl XML bilinen türleri Program arac...
Nasıl sıfırdan log4net Program aracılı...
Nasıl Android program aracılığıyla gel...
Program aracılığıyla ımg etiketinin sr...
Nasıl python.exe konumu Program aracıl...