Dalam artikel sebelumnya, saya memperkenalkan Anda pada tutorial terperinci tentang Java Log4j. Untuk detailnya, silakan lihat di bawah.
Pertama, kami memberi Anda unduhan log4j.jar: http://logging.apache.org/log4j/1.2/download.html
1. Gunakan log4j untuk proyek web java
1. Tambahkan file web.xml
<!-Mengkonfigurasi log4j-> <context-param> <param-name> WebApprootkey </param-name> <param-value> com.hsinghsu.testssh.webapp.root </param-value> </contex t -Param> <context-param> <Param-name> LOG4JConfigLocation </param-name> <param-value> /web-inf/classes/log4j.properties </param-value> </context-par aM> <konteks -param> <param-name> log4jrefresherinterval </param-name> <param-value> 600000 </param-value> </context-param>
2. Tambahkan file log4j.properties
log4j.rootcategory = info, stdout, r log4j.appender.stdout = org.apache.log4j.consoleAppender LOG4J.Appender.stdout.layout = org.apache.log4j.p atternlayout log4j.appender.stdout.layout.conout.conout.conout.conuT.conVersion = qcer = qcender. ]%p [%t]%C.%m (%l) |%m%n log4j.Appender.r = org.apache.log4j.dailyrollingfileAppender #log4j.appender.r.file = e: // test // Avatar .log ## Linux Logs File Path #log4j.Appender.r.file = $ {com.hsinghsu.testssh.webapp.root} /log/testlog.log ## Log Windows File Path Log4j.Appender .R.File = D: //eclipsespace//testssh//webcontent//web-inth - [ts] %p %t %c - %m %n #log4j.logger.com.neusoft = debug #log4j.logger.com.opensymphony.oscache = kesalahan log4j.logger.net.sf.navigator = info #log4 j.logger .org.apache.commons = kesalahan #log4j.logger.org.apache.struts = warn #log4j.logger.org.displaytag = kesalahan #log4j.logger.org.springframework = inf o # #log4j.logger. com.Ibatis. org.hibernate = debug log4j.logger.org.hibernate = info #log4j.logger.org.LOGICALCOBWEBS = WARN
3. Gunakan log4j
Misalnya, gunakan log4j di UserserServiceImpl.java.
paket com.hsinghsu.testssh.service.impl; DAO .USERDAO; Logger Static Final = Logger.GetLogger (UserserviceImpl.class); - UserServiceImpl Login Metode Nama: "+Nama+" Kata Sandi: "+Kata Sandi); pengguna pengguna = userdao.getUserByName (name); if (user! = Null) {if (passwor d.equals (user.getpwd ())) {return true;
2. Penjelasan terperinci Parameter Log4j.Properties
Tingkat log dibagi menjadi debug (informasi debug), info (informasi umum), peringatan (informasi peringatan), kesalahan (informasi kesalahan), dan fatal (informasi kesalahan fatal).
LOG4J Mendukung dua format file konfigurasi, satu adalah file format XML, dan yang lainnya adalah file properti java log4j.properties berikut ini adalah untuk mengilustrasikannya dengan log4j.properties sebagai contoh.
1. Mengkonfigurasi logger root
Logger bertanggung jawab untuk menangani sebagian besar operasi penebangan, dan sintaksinya adalah:
log4j.rootlogger = [level], ovenname1, appenderName2,…
Level: adalah prioritas logging, dibagi menjadi off, fatal, kesalahan, memperingatkan, info, debug, semua atau level yang Anda tentukan.
APPDERNAME: Adalah nama tujuan output informasi log yang ditentukan.
Misalnya: log4j.rootlogger = info, a1, b2, c3
Dalam versi Log4J awal, org.apache.category mengimplementasikan fungsi logger, dan kemudian memperluas kelas kategori menggunakan logger, jadi log4j.rootcategory juga dapat digunakan.
Misalnya: log4j.rootcategory = info, a1, a2
2. Mengkonfigurasi Appender tujuan untuk output informasi log
Appender bertanggung jawab untuk mengendalikan output operasi logging, dan sintaksinya adalah:
LOG4J.Appender.ApplerName = sepenuhnya.Qualified.name.of.Appender.class
Di antara mereka, "Full.Qualified.name.of.Appender.class" memiliki tipe berikut:
i.org.apache.log4j.consoleAppender (konsol)
Ada beberapa opsi:
Threshold = Warn: Menentukan tingkat output terendah dari pesan log.
IMMEDIATEFLUSH = TRUE: Nilai default benar, yang berarti semua pesan akan segera output.
Target = system.err: Secara default, itu adalah: System.out, tentukan konsol output
ii.org.apache.log4j.fileAppender (file)
Ada beberapa opsi:
Threshold = Warn: Menentukan tingkat output terendah dari pesan log.
IMMEDIATEFLUSH = TRUE: Nilai default benar, yang berarti semua pesan akan segera output.
File = mylog.txt: Menentukan bahwa pesan tersebut adalah output ke file mylog.txt.
Append = false: Nilai default benar, yang berarti menambahkan pesan ke file yang ditentukan.
iii.org.apache.log4j.dailyrollingfileAppender (menghasilkan satu file log setiap hari)
Ada beberapa opsi:
Threshold = Warn: Menentukan tingkat output terendah dari pesan log.
IMMEDIATEFLUSH = TRUE: Nilai default benar, yang berarti semua pesan akan segera output.
File = A.Log: Menentukan bahwa pesan tersebut output ke file A.Log, yang dimulai dari jalur root server web secara default.
Append = false: Nilai default benar, yang berarti menambahkan pesan ke file yang ditentukan.
DatePattern = '.' Yyyy-ww: Gulir file seminggu sekali, yaitu menghasilkan file baru setiap minggu. Tentu saja, Anda juga dapat menentukan bulanan, minggu, hari, waktu dan menit. Artinya, format yang sesuai adalah sebagai berikut:
'.'yyyy-mm: Bulanan
'.'yyyy-ww: mingguan
'.'yyyy-mm-dd: Setiap hari
'.'yyyy-mm-dd-a: dua kali sehari
'.'yyyy-mm-dd-hh: jam
'.'yyyy-mm-dd-hh-mm: per menit
iv.org.apache.log4j.rollingfileAppender (file baru dihasilkan ketika ukuran file mencapai ukuran yang ditentukan. Anda dapat mengatur ukuran file dengan log4j.appler.applerName.maxfileSize = 100kb)
Ada beberapa opsi:
Threshold = Warn: Menentukan tingkat output terendah dari pesan log.
IMMEDIATEFLUSH = TRUE: Nilai default benar, yang berarti semua pesan akan segera output.
File = A.Log: Menentukan bahwa pesan tersebut output ke file A.Log, yang dimulai dari jalur root server web secara default.
Append = false: Nilai default benar, yang berarti menambahkan pesan ke file yang ditentukan.
MaxFileSize = 100KB: Sufiks dapat berupa KB, MB atau GB.
MaxBackupIndex = 2: Menentukan jumlah maksimum file gulir yang dapat dihasilkan.
v.org.apache.log4j.writerappender (kirim informasi log dalam format stream ke tempat tertentu)
Misalnya:
LOG4J.Appender.r = org.apache.log4j.dailyrollingfileAppender
LOG4J.Appender.r.file = d: //eclipsspace//testssh//webcontent//web-inf//testlog.log
3. Konfigurasikan format (tata letak) dari informasi log
Tata letak bertanggung jawab untuk memformat output appender, dan sintaksinya adalah:
LOG4J.Appender.ApplerName.Layout = Full.Qualified.name.of.layout.class
Di antara mereka, "sepenuhnya.Qualified.name.of.layout.class" memiliki tipe berikut:
i.org.apache.log4j.htmllayout (tata letak dalam bentuk tabel html)
Ada beberapa opsi:
LocationInfo = true: Nilai default false, output nama file java dan nomor baris
Title = File Aplikasi Saya: Nilai default adalah pesan log log4J.
ii.org.apache.log4j.patternlayout (mode tata letak dapat ditentukan secara fleksibel)
Ada beberapa opsi:
ConversionPattern =%m%n: Menentukan cara memformat pesan yang ditentukan.
-X Number: Alignment kiri ketika informasi x adalah output;
%P: Prioritas informasi log keluaran, yaitu debug, info, peringatan, kesalahan, fatal,
%D: Tanggal atau waktu dari titik waktu log adalah output. Mirip: 18 Oktober 2002 Hari 22:10:28, 921
%R: Jumlah milidetik ke output dari startup aplikasi ke output dari informasi log ini
%C: Kategori yang dimiliki oleh informasi log keluaran biasanya merupakan nama lengkap kelas
%t: output nama utas yang menghasilkan acara log
%L: Peristiwa log output terjadi di lokasi kemunculan%C.%M (%F:%L), termasuk nama kategori, utas kejadian, dan jumlah baris dalam kode. Contoh: testlog4.main (testlog4.java:10)
%X: Output NDC (lingkungan diagnostik Neshed) yang terkait dengan utas saat ini, terutama dalam aplikasi seperti servlet Java dengan multi-pelanggan dan multi-threading.
%%: output karakter "%"
%F: Nama file di mana pesan log output dihasilkan
%L: Nomor baris dalam kode output
%M: Pesan yang ditentukan dalam kode output dan informasi log spesifik yang dihasilkan
% n: output jeda jalur pengembalian carriage, platform Windows adalah "/r/n", Platform UNIX adalah "/n" untuk output garis informasi log dapat ditambahkan antara % dan karakter mode untuk mengontrol lebar minimum dan lebar maksimum. Lebar, dan penyelarasan teks. menyukai:
%20C: Menentukan nama kategori output, lebar minimum adalah 20. Jika nama kategori kurang dari 20, itu selaras dengan default.
%-20c: Menentukan nama kategori output.
%.30C: Tentukan nama kategori output. tidak ada ruang.
%20.30C: Jika nama kategori kurang dari 20, isi ruang dan sejajarkan dengan benar.
Misalnya: %-4r %-5p %d {yyyy-mm-dd hh: mm: sss} %c %m %n
[Tes]%p [%t]%C.%m (%l) |%m%n
iii.org.apache.log4j.simplelayout (berisi level dan string informasi dari informasi log)
iv.org.apache.log4j.ttcclayout (termasuk waktu, utas, kategori, dll.
4. Lainnya
log4j.logger.com
Tentukan bahwa semua kelas di bawah paket com.neusoft adalah debug.
log4j.logger.com.opensymphony.oscache = kesalahan
log4j.logger.net.sf.navigator = error
Kedua kalimat ini menetapkan tingkat kesalahan yang terjadi di bawah dua paket ini untuk kesalahan.
log4j.logger.org.apache.commons = error
log4j.logger.org.apache.struts = warn
Dua kalimat ini adalah paket struts.
log4j.logger.org.displaytag = error
Kalimat ini adalah paket DisplayTag. (Digunakan pada halaman daftar pertanyaan QC)
log4j.logger.org.springframework = debug
Kalimat ini adalah paket musim semi.
log4j.logger.org.hibernate.ps.preparedStatementCache = warn
log4j.logger.org.hibernate = debug
Dua kalimat ini adalah paket Hibernate.
3. Tulis log ke beberapa file.
Konfigurasi log4j:
log4j.rootcategory = info, stdout
LOG4J.APPENDER.STDOUT = org.apache.log4j.consoleAppender
LOG4J.Appender.stdout.layout = org.apache.log4j.patternlayout
LOG4J.Appender.stdout.layout.conversionPattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [colorclouds]%p [%t]%C.%m (%l) | N
log4j.logger.net.sf.navigator = info
log4j.logger.org.springframework = info
log4j.logger.runlogger = info, r
LOG4J.Appender.r = org.apache.log4j.rollingfileAppender
LOG4J.Appender.r.file = g: //log//runlog.log
LOG4J.Appender.R.MaxFilesize = 51200KB
#log4j.applent.r.file = $ {com.huawei.icity.webapp.root} /log/icity.log
LOG4J.APPENDER.R.LAYOUT = org.apache.log4j.patternlayout
LOG4J.Appender.r.layout.conversionPattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [colorclouds run]%p [%t]%C.%m (%l) | %N
#log4j.logger.businesslogger = info, b
#log4j.Appender.b = org.apache.log4j.rollingfileAppender
#log4j.Appender.b.file = g: //log//businesslog.log
#LOG4J.Appender.B.MaxFilesize = 51200KB
#log4j.Appender.b.layout = org.apache.log4j.patternlayout
#LOG4J.Appender.B.Layout.ConversionPattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [bisnis colorclouds]%p [%t]%C.%m (%l) | M N
log4j.logger.interfacelogger = info, i
LOG4J.Appender.i = org.apache.log4j.rollingfileAppender
LOG4J.Appender.i.file = g: //log//interfacelog.log
LOG4J.Appender.I.MaxFilesize = 51200KB
LOG4J.Appender.i.layout = org.apache.log4j.patternlayout
LOG4J.Appender.i.layout.conversionPattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [antarmuka colorclouds]%p [%t]%C.%m (%l) |%m %N
Java Call:
Impor org.apache.commons.logging.log; getLog ("runlogger"); // jalankan log private static log interfacelog = logfactory.getLog ("antarmaselogger"); // antarmuka log string public execute () lemparan kecuali ion {interfacelog.info ("==== >> Permintaan "); runlog.info (" permintaan 02 "); return super.execute ();}}
Berikut ini adalah cara untuk mengonfigurasi log4j dalam proyek web
1. Secara dinamis mengubah level dan kebijakan catatan, dan tidak perlu memulai kembali aplikasi web, sebagaimana dinyatakan dalam "perusahaan java yang efektif".
2. Atur file log ke/web-inf/log/tanpa menulis jalur absolut.
3. Anda dapat menempatkan log4j.properties dan properti lainnya bersama-sama dengan / web-inf / bukan jalur kelas.
Tambahkan web.xml
<!-Jika parameter webapprootkey tidak ditentukan, maka webapprootkey adalah default "webapp.root"->
<context-param> <Param-name> webapprootkey </param-name> <param-value> xxx.root </param-value> </context-param> <Context-param> <param-name> Log 4jConfigLocation <sercont- context /param-name> <param-value> web-inf/log4j.properties </param-value> </context-param> <Context-param> <param-name> LOG4JRefRESHRESHERTERVAL </param-name> <param-valuee > 60000 </param-value> </context-param> <Distener> <Distener-Class> org.springframework.web.util.log4jconfigListener </engeaner-class> </listener>
Dalam konfigurasi di atas, LOG4JConfigListener akan membaca file konfigurasi di web-inf/log4j.propeties;
Buka utas pengawas untuk memindai file konfigurasi berubah setiap 60 detik;
Dan tekan jalur direktori web ke dalam variabel sistem yang disebut webapp.root.
Kemudian, lokasi logfile dapat didefinisikan dalam log4j.properties
log4j.appender.logfile.file = $ {webapp.root} /web-inf/logs/myfuse.log
Jika ada beberapa aplikasi web dan takut bahwa variabel webapp.root akan diulang, Anda dapat mendefinisikan webapprootkey dalam konteks-param.
Di atas adalah keterampilan artikel ini untuk menganalisis konfigurasi Java Web Log4J dan mengkonfigurasi log4j dalam proyek web.