2012-10-12 15 views
19

pardonda root ve logger'a ihtiyacımız var. Ben log4j için tamamen yeni. Çeşitli eklere başvuran iki etiket ve etiket olduğunu gördüm. Kod tabanımdaki bilgileri bir dosyaya kaydetmek, e-posta adresime göndermek ve konsola yazdırmak istediğimi varsayalım. Seviyenin bilgi olarak ayarlanmasını istiyorum. Üç ekleyiciye referans veren tek bir etiketin olması yeterli değil mi? (Dosya, e-posta ve konsol) neden başka bir şeye ihtiyacımız var?neden soru çok önemsiz ise log4j.xml

+0

Tek bir kök etiketi olması yeterli değil mi? eklere üç referansı olan? – parameswar

cevap

30

Bu yeterli.

log4j bir kayıt cihazı, bir paket ya da bazı durumlarda belirli bir sınıf ile ilişkilidir. Bir loggerın paket/sınıfı "name" özelliğiyle tanımlanır. Bir kaydedici, mesajlarını paketinde ve ayrıca tüm çocuk paketlerinde ve sınıflarında kaydeder. Bunun tek istisnası, uygulamadaki tüm sınıflar için mesajları kaydeden kök kaydedicidir.

bir kayıt cihazı, aynı zamanda seviyesine sahiptir ve buna bağlı olarak bir veya çok sayıda appenders (günlük yerler) sahip olabilir. Bir sonraki örnekte

iki kaydedicileri vardır:

  • seviye INFO ile veya çeşitli hedeflere tüm paketler yukarıdaki iletileri kaydeder kök logger: konsol, e-posta ve dosya,
  • "com.foo" iletilerini, "com.foo" paketindeki level WARN veya üzeri iletileri ve alt paketlerini başka bir dosyaya kaydeden "com.foo" logger.

    <log4j:configuration> 
        <!-- Declaration of appenders FILE, MAIL, CONSOLE and ANOTHERFILE --> 
        ... 
        <!-- --> 
    
        <logger name="com.foo"> 
         <level value="warn"/> 
         <appender-ref ref="ANOTHERFILE" /> 
        </logger> 
        <root> 
         <priority value ="info" /> 
         <appender-ref ref="FILE" /> 
         <appender-ref ref="MAIL" /> 
         <appender-ref ref="CONSOLE" /> 
        </root> 
    </log4j:configuration> 
    

Sen log4j temelleri hakkında read more gerektiği.

+0

Kök kaydedici "com.foo" sınıfının mesajlarını da kaydeder mi? –

+0

@ mmc18 Evet, kesinlikle. ANOTHERFILE'e yazılan tüm mesajlar da kök loggerın eklerine yazılır. –

+1

Sadece bir ek not, kaydedicinin additivity özelliğini false olarak ayarlayarak ANOTHERFILE öğesine gönderilen iletilerin kök günlüğüne gönderilmesini engelleyebilirsiniz. Alt düzeyden üste (kök) kadar köstekleyen bir istisna gibi düşünün. addivity bir "atmak" olmadan "yakalamak" – JReader