Log4j.properties dosyasında log4j.rootLogger özelliğinin önemi nedir? Bu mülkü kullanmazsam ne olur?


85

Dosyadaki log4j.rootLoggermülkiyetin önemi nedir log4j.properties? Bu mülkü kullanmazsam ne olur?

Örnek :

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

Bu özelliği ERRORmode olarak ayarlarsam ne olur ?

Yanıtlar:


95

Samudra Gupta 1. kitabında şöyle açıklıyor :

LoggerNesne bir uygulama geliştiricisi herhangi bir iletiyi açmak için kullandığı ana nesnedir. LoggerBir uygulamanın belirli bir örneğiyle içinde hareket eden nesnelerin bir izleyin üst-alt hiyerarşisi .

Aşağıdaki yapılandırmaya sahipseniz:

log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.logger.com.me.proj2=INFO

Günlükçü hiyerarşisi şu şekilde görünebilir: 2

Ağaç

Samudra Gupta açıklamaya devam ediyor:

Hiyerarşinin en üstünde bir kök kaydedici bulunur. Kök kaydedici, bulabileceğimiz herhangi bir özel günlükçü hiyerarşisinin kapsamı dışında bulunur. Her zaman, tüm olası günlükçü hiyerarşileri için kök günlükçü olarak bulunur ve ad alanı yoktur. Diğer tüm uygulamaya özgü Loggernesneler, kök kaydedicinin alt nesneleridir. Günlükçülerin ebeveyn-çocuk ilişkisi, aynı uygulama içinde hareket eden günlükçülerin bağımlılığını belirtir. Bir çocuk günlükçü, özellikleri ana günlükçiden tekrar tekrar ağacın üst kısmına devralabilir. Tipik olarak, bir çocuk günlük kaydedici, aşağıdaki özellikleri üst günlük kaydedicilerinden devralır:

  • Level: Çocuk günlükçünün açık bir ağaç düzeyi belirtilmemişse, en yakın üst düzeyini veya hiyerarşide özyinelemeli olarak bulduğu ilk uygun düzeyi kullanır.
  • Appender: Bir günlükçüye eklenmiş bir ekleyici yoksa, çocuk günlükçü, en yakın üst kaydedicinin ekleyicisini veya ağaçta yinelemeli olarak bulduğu ilk ekleyiciyi kullanır.
  • ResourceBundle: ResourceBundlesgünlük mesajlarının yerelleştirilmesi için kullanılan anahtar / değer modeli özellikleri dosyalarıdır. Bir çocuk günlük kaydedici ResourceBundle, ana günlükçü ile ilişkili her şeyi devralır .

NOTLAR

1 Samudra Gupta, Pro Apache Log4j, İkinci Baskı (Berkeley, CA: Apress, 2005), 24-25, ISBN13: 978-1-59059-499-5

2 Dominic Mitchell, Logging in Java , http://happygiraffe.net/blog/2008/09/03/logging-in-java/ , Erişim tarihi 26 Mayıs 2014.


1
"Olası tüm günlükçü hiyerarşileri için her zaman kök günlükçü olarak bulunur ve ad alanı yoktur."
Azim

2
Bu OP sorusunun cevabı nedir - " Bu özelliği kullanmazsam ne olur? " ??
hagrawal

4
Tanrım ... Dominic'in sayfasının arka planına bakın. Kesinlikle okunamaz.
MasterJoe

@ testerjoe2 - haklısın, güzel bir görüntü olmasına rağmen okumayı zorlaştırıyor - insanların beyaz metinli sarı bir arka plana sahip olduğu eski html günleri gibi - gözlerinizi kanamak istiyor!
JGlass

12

Cevaplamak

Bu mülkü kullanmazsam ne olur?

RootLogger'ı bir düzeye ve ekleyiciye ayarlamazsanız, bir uyarı alırsınız.

Örneğin, satırı atlarsanız veya yorum yaparsanız log4j.rootLogger=DEBUG, stdout, yani log4j.properties dosyanızın yalnızca rootlogger içerdiğini ve ek kaydedici olmadığını söylerseniz, burada kök günlükçü yorum yapılır:

#log4j.rootLogger=DEBUG, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

Aşağıdaki çıktıya benzer bir şey elde edeceksiniz:

log4j:WARN No appenders could be found for logger (log4jtests.Log4jHelloWorld).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

7

log4j.rootLogger özelliği, root Logger için Seviye (DEBUG burada) ve Appender'ı (A1 burada) ayarlar. Bu zorunlu değildir. Kök kaydediciye varsayılan bir ekleyici eklenmez ve ekleyici olmadan var olabilir. Dolayısıyla, log4j özellikler dosyanız bu özellik ayarlanmadan olabilir.

Kök kaydedici, Java'daki Object sınıfına benzer şekilde log4j hiyerarşisindeki en yüksek günlük kaydedicidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.