Samudra Gupta menjelaskan dalam bukunya 1 :
The Logger
objek adalah objek utama yang pengembang aplikasi menggunakan login pesan apapun. The Logger
benda bertindak dalam contoh khusus dari aplikasi mengikuti hirarki orangtua-anak .
Jika Anda memiliki konfigurasi berikut:
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
Beginilah tampilan hierarki logger: 2
Samudra Gupta terus menjelaskan:
Di bagian atas hierarki ada root logger. Logger root berada di luar cakupan hierarki logger kustom yang mungkin kami hasilkan. Itu selalu ada sebagai root logger untuk semua kemungkinan hierarki logger, dan tidak memiliki namespace. Semua Logger
objek khusus aplikasi lainnya adalah objek turunan ke logger root. Hubungan induk-anak dari para penebang menandakan ketergantungan para penebang yang bertindak dalam aplikasi yang sama. Logger anak dapat mewarisi properti dari logger induknya secara rekursif di atas pohon. Biasanya, logger anak akan mewarisi properti berikut dari logger induknya:
Level
: Jika pencatat anak tidak memiliki tingkat pohon eksplisit yang ditentukan, ia akan menggunakan tingkat induk terdekatnya atau tingkat pertama yang tepat yang ditemukannya secara rekursif di atas hierarki.
Appender
: Jika tidak ada appender yang dipasang ke logger, logger turunan menggunakan appender dari pencatat induk terdekatnya atau appender pertama yang ditemukannya secara rekursif di atas pohon.
ResourceBundle
: ResourceBundles
adalah file properti pola nilai kunci yang digunakan untuk lokalisasi pencatatan pesan. Logger anak mewarisi apa pun yang ResourceBundle
terkait dengan logger induknya.
CATATAN
1 Samudra Gupta, Pro Apache Log4j, Edisi Kedua (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/ , Diakses pada 26 Mei 2014.
Untuk menjawab
Jika Anda tidak menyetel rootLogger ke level dan appender, Anda akan mendapatkan peringatan.
Misalnya, jika Anda menghilangkan atau mengomentari baris
log4j.rootLogger=DEBUG, stdout
, misalnya file log4j.properties Anda hanya berisi rootlogger dan tidak ada logger tambahan, di sini logger root sedang dikomentari:Anda akan mendapatkan output seperti berikut:
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.
sumber
log4j.rootLogger Properti menyetel Level (DEBUG di sini) dan Appender (A1 di sini) untuk root Logger. Ini tidak wajib. Root logger tidak memiliki appender default yang terpasang dan dapat ada tanpa appender. Jadi, file properti log4j Anda bisa jadi tanpa properti ini disetel.
Root logger adalah logger tertinggi dalam hierarki log4j yang mirip dengan kelas Object di Java.
sumber