1: Pengantar Pengantar Log4j
LOG4J adalah proyek open source dari Apache. Format output dari setiap log; Yang paling menarik adalah bahwa ini dapat dikonfigurasi secara fleksibel melalui file konfigurasi tanpa memodifikasi kode aplikasi.
Selain itu, melalui log4j antarmuka bahasa lain, Anda dapat menggunakan log4j di program C, C ++, .NET, PL/SQL. Komponen. Selain itu, dengan menggunakan berbagai ekstensi pihak ketiga, Anda dapat dengan mudah mengintegrasikan log4j ke dalam J2EE, Jini, dan bahkan aplikasi SNMP.
2. Contoh pemula
1. Buat proyek Java baru, impor paket log4j-1.2.17.jar, dan direktori akhir dari seluruh proyek adalah sebagai berikut
2. Buat dan atur log4j.properties di level yang sama
### Mengatur ###
log4j.rootlogger = debug, stdout, d, e
### Informasi keluaran untuk mengontrol lift ####
LOG4J.APPENDER.STDOUT = org.apache.log4j.consoleAppender
LOG4J.APPENDER.STDOUT.TARGET = System.out
LOG4J.Appender.stdout.layout = org.apache.log4j.patternlayout
LOG4J.Appender.stdout.layout.conversionPattern = [%-5p]%d {yyyy-mm-dd hh: mm: ss, sss} metode:%l%n%m%n
### log keluaran di atas level debug ke = e: //logs/error.log ###
LOG4J.Appender.D = org.apache.log4j.dailyrollingfileAppender
LOG4J.Appender.D.File = e: //logs/log.log
LOG4J.Appender.D.Append = True
LOG4J.APPENDER.D.THRESHOLD = DEBUG
LOG4J.Appender.D.Layout = org.apache.log4j.patternlayout
LOG4J.Appender.D.Layout.ConversionPattern = %-d {yyyy-mm-dd hh: mm: ss} [ %t: %r]-[ %p] %m %n
### log keluaran di atas level kesalahan ke = e: //logs/error.log ###
LOG4J.APPENDER.E = org.apache.log4j.dailyrollingfileAppender
LOG4J.Appender.E.File = E: //logs/error.log
LOG4J.Appender.E.Append = True
LOG4J.APPENDER.E.THRESHOLD = ERROR
LOG4J.Appender.e.layout = org.apache.log4j.patternlayout
LOG4J.Appender.e.layout.conversionPattern = %-d {yyyy-mm-dd hh: mm: ss} [ %t: %r]-[ %p] %m %n
3. Atur konten log
Paket com.mucfc; impor org.apache.log4j.logger;/** *@penulis linbingwen *@18 Mei 2015 9:14:21 */tes kelas publik {private static logger logg er = logger.getLogger (tes. kelas); ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::: debug ("Ini adalah pesan debug."); Pesan Info. "); // Catat informasi tingkat kesalahan logger.error (" Ini adalah pesan kesalahan. ");}}4. Hasil output
(1) Pertama -tama, informasi konsol
(2) Mari kita lihat file output
Kontennya adalah sebagai berikut, dan ditemukan bahwa telah menjadi output ke dokumen yang sesuai sesuai kebutuhan.
3. Metode Penggunaan Dasar Log4j
Log4J terdiri dari tiga komponen penting: prioritas informasi log, tujuan output informasi log, dan format output dari informasi log. Prioritas informasi log adalah dari tinggi ke rendah. file;
2.1
Bahkan, Anda juga tidak dapat menggunakan file konfigurasi sama sekali, tetapi konfigurasikan lingkungan log4j dalam kode Anda. Namun, menggunakan file konfigurasi akan membuat aplikasi Anda lebih fleksibel. Log4j mendukung dua format file konfigurasi, satu adalah file format XML, dan yang lainnya adalah file fitur Java (key = value). Di bawah ini kami memperkenalkan metode menggunakan file fitur Java sebagai file konfigurasi:
1. Mengkonfigurasi logger root, sintaksinya adalah:
LOG4J.ROOTLOGGER = [LEVEL], APPENDERNAME, APPERDERNAME,…
Di antara mereka, level adalah prioritas penebangan, dibagi menjadi off, fatal, kesalahan, memperingatkan, info, debug, semua atau level yang Anda tentukan. Log4j merekomendasikan hanya menggunakan empat level, dengan prioritas dari tinggi ke rendah, yaitu kesalahan, peringatan, info, dan debug. Pada level yang ditentukan di sini, Anda dapat mengontrol sakelar ke tingkat informasi log yang sesuai dalam aplikasi. Misalnya, jika level info didefinisikan di sini, semua informasi log level debug dalam aplikasi tidak akan dicetak. Nama overaMen mengacu pada di mana informasi log B adalah output. Anda dapat menentukan beberapa tujuan output secara bersamaan.
2. Mengkonfigurasi appender tujuan untuk mengeluarkan informasi log, dan sintaksinya adalah:
LOG4J.Appender.ApplerName = sepenuhnya.Qualified.name.of.Appender.class
LOG4J.Appender.ApplerName.Option1 = value1
...
LOG4J.Appender.ApplerName.Option = Valuen
Di antara mereka, pengembara yang disediakan oleh Log4J adalah sebagai berikut:
org.apache.log4j.consoleAppender (konsol),
org.apache.log4j.fileAppender (file),
org.apache.log4j.dailyrollingfileAppender (menghasilkan satu file log setiap hari),
org.apache.log4j.rollingfileAppender (file baru dihasilkan ketika ukuran file mencapai ukuran yang ditentukan),
org.apache.log4j.writerappender (kirim informasi log dalam format aliran ke tempat tertentu)
3. Konfigurasikan format (tata letak) informasi log, dan sintaksinya adalah:
LOG4J.Appender.ApplerName.Layout = Full.Qualified.name.of.layout.class
LOG4J.Appender.ApplerName.Layout.Option1 = value1
...
LOG4J.Appender.ApplerName.Layout.Option = Valuen
Di antara mereka, ada beberapa tata letak yang disediakan oleh Log4j:
org.apache.log4j.htmllayout (tata letak dalam bentuk tabel html),
org.apache.log4j.patternlayout (mode tata letak dapat ditentukan secara fleksibel),
org.apache.log4j.simplelayout (berisi level dan string informasi dari informasi log),
org.apache.log4j.ttcclayout (termasuk waktu, utas, kategori, dll.
LOG4J menggunakan format cetak yang mirip dengan fungsi printf dalam bahasa C untuk memformat informasi log, dan parameter pencetakan adalah sebagai berikut: %m pesan yang ditentukan dalam kode output
%P Output Prioritas, mis. Debug, info, peringatan, kesalahan, fatal
%r Output Jumlah milidetik yang diambil dari awal aplikasi untuk mengeluarkan informasi log
%C mengeluarkan kategori, biasanya nama lengkap kelasnya
%t mengeluarkan nama utas yang menghasilkan acara log
%n outputs carriage return line break, windows platform adalah "rn", platform unix adalah "n"
%d output Tanggal atau waktu dari titik waktu log. : 18 Oktober 2002 22:10:28, 921
%l output lokasi di mana peristiwa log terjadi, termasuk nama kelas, utas yang terjadi, dan jumlah baris dalam kode. Contoh: testlog4.main (testlog4.java:10)
2.2. Gunakan log4j dalam kode
1. Dapatkan perekam
Menggunakan log4j, langkah pertama adalah mendapatkan perekam log, yang akan bertanggung jawab untuk mengendalikan informasi log. Sintaksnya adalah:
Public Static Logger GetLogger (nama string)
Dapatkan logger dengan nama yang ditentukan dan, jika perlu, buat logger baru untuk nama tersebut. Nama umumnya dinamai di kelas ini, seperti:
static logger logger = logger.getLogger (serverwithlog4j.class.getName ())
2. Baca file konfigurasi
Setelah mendapatkan logger, langkah kedua akan mengkonfigurasi lingkungan log4j, dengan sintaks sebagai:
BASICConfigurator.configure (): Secara otomatis dan cepat gunakan lingkungan LOG4J default.
PropertyConfigurator.configure (String ConfigFileName): Baca file konfigurasi yang ditulis menggunakan file fitur Java.
Domconfigurator.configure (string fileName): Baca file konfigurasi dalam formulir XML.
3. Masukkan Informasi Catatan (Format Informasi Log)
Ketika dua langkah yang diperlukan sebelumnya selesai, Anda dapat dengan mudah memasukkan pernyataan logging dari berbagai tingkat prioritas di mana pun Anda ingin log.
Logger.debug (pesan objek);
Logger.info (pesan objek);
Logger.warn (pesan objek);
Logger.Error (pesan objek);
2.3
Setiap logger mengalami level log (level log) untuk mengontrol output informasi log. Level log dibagi menjadi:
A: Dari level tertinggi digunakan untuk menutup semua penebangan.
B: Fatal menunjukkan bahwa setiap peristiwa kesalahan kritis akan menyebabkan aplikasi keluar.
C: Kesalahan menunjukkan bahwa meskipun peristiwa kesalahan terjadi, itu masih tidak mempengaruhi operasi sistem yang berkelanjutan.
D: Hangat menunjukkan bahwa akan ada situasi kesalahan potensial.
E: Info secara umum dan pada tingkat berbutir kasar, ia menekankan seluruh operasi aplikasi.
F: Debug umumnya digunakan pada tingkat berbutir halus dan sangat membantu untuk menebus aplikasi.
G: Semua level minimum, digunakan untuk membuka semua logging.
Level di atas didefinisikan dalam kelas org.apache.log4j.level. Log4j hanya merekomendasikan penggunaan 4 level, dengan prioritas dari tinggi ke rendah, kesalahan, peringatan, info dan debug. Dengan menggunakan level log, Anda dapat mengontrol output informasi log pada level yang sesuai di aplikasi. Misalnya, jika B digunakan, semua informasi log di bawah tingkat info (seperti debug) dalam aplikasi tidak akan dicetak.
4. Gunakan instance log4j dalam proyek web
Kode di atas menjelaskan aplikasi sederhana log4j, dan pada kenyataannya, menggunakan log4j sangat sederhana dan nyaman. Tentu saja, di samping metode konfigurasi di atas, ada hal -hal lain, seperti membuat aplikasi J2EE saat menggunakan LOG4J di aplikasi J2EE, Anda harus terlebih dahulu memuat file konfigurasi log4J saat memulai layanan dan menginisialisasinya, yang dapat dilakukan di web.xml.
1. Penggunaan Log4J dari Aplikasi Web pada dasarnya menggunakan: Buat servlet baru, yang menjalankan konfigurasi untuk log4j dalam fungsi init. Secara umum, ini adalah membaca file konfigurasi. Oleh karena itu, Anda perlu mengkonfigurasi servlet ini di web.xml, dan mengatur muatan-ke-startup ke 1.
2. Konfigurasi Servlet ini log4J adalah untuk membaca file konfigurasi dan kemudian hubungi fungsi konfigurasi. Ada dua pertanyaan di sini: 1. Anda perlu tahu di mana file itu;
3. Lokasi file konfigurasi dapat dikonfigurasi di Web.xml.
4. Umumnya ada dua jenis jenis file, satu adalah file properti java, dan yang lainnya adalah file xml
Konten umum dari file konfigurasi: log4j dapat menentukan level minimum level log output, serta format konfigurasi output dari log.
(1) Buat proyek web, direktori akhir dari seluruh proyek adalah sebagai berikut
(2) Konfigurasi web.xml adalah sebagai berikut:
<? Xml Version = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http: // java .sun.com/xml/ns/javaee "xsi: schemalocation =" http://java.sun.com/xml/ns/javaee/web-app_3_0 .xsd "id =" webapp_id "version =" 3.0 "> <lplay-name> Loglearning </splay- . </servlet-class> <Ilin-param> <Param-name> log4j-properties-location </param-name> <param-value> /web-inf/classes/log4j.properties </param-value> </log4j.properties </param-value> init -param> <boad-in-startup> 1 </boad-in-startup> </servlet> <servlet-mapping> <servlet-name> log4jtestservlet </servlet-name> <rerl-pattern>/test </s url -pattern> </servlet-mapping> </seb-app>
(3) File konfigurasi log4j.properties
### atur level log ###
log4j.rootlogger = debug, stdout, d, e
LOG4J.APPENDER.STDOUT = org.apache.log4j.consoleAppender
LOG4J.APPENDER.STDOUT.TARGET = System.out
LOG4J.Appender.stdout.layout = org.apache.log4j.patternlayout
LOG4J.Appender.stdout.layout.conversionPattern = [%-5p]%d {yyyy-mm-dd hh: mm: ss, sss} metode:%l%n%m%n
LOG4J.Appender.D = org.apache.log4j.dailyrollingfileAppender
LOG4J.Appender.D.File = f: //logs/log.log
LOG4J.Appender.D.Append = True
LOG4J.APPENDER.D.THRESHOLD = DEBUG
LOG4J.Appender.D.Layout = org.apache.log4j.patternlayout
LOG4J.Appender.D.Layout.ConversionPattern = %-d {yyyy-mm-dd hh: mm: ss} [ %t: %r]-[ %p] %m %n
LOG4J.APPENDER.E = org.apache.log4j.dailyrollingfileAppender
LOG4J.Appender.e.file = f: //logs/error.log
LOG4J.Appender.E.Append = True
LOG4J.APPENDER.E.THRESHOLD = ERROR
LOG4J.Appender.e.layout = org.apache.log4j.patternlayout
LOG4J.Appender.e.layout.conversionPattern = %-d {yyyy-mm-dd hh: mm: ss} [ %t: %r]-[ %p] %m %n
(4) Servlet diinisialisasi segera setelah wadah web datang
Log4Jinitservlet.javapackage com.mucfc; ; * Kelas Implementasi Servlet LOG4JINITSERVLET */ @WebServlet ("/ LOG4JINITSERVLET") Kelas Publik Log4JinitServlet memperluas httpservlet {private static final long s eraAlversionUid = 1L; );. "); String log4jlocation = config.getInitparameter (" log4j-properties-location "); servletcontext sc = config.getServletContext (); if (log4jlocation == nul l) {system.err.println (" *** no LOG4J- File Inisialisasi Properties-Location, jadi gunakan BasicConfigurator untuk menginisialisasi "); BasicConfigurator.Configure ();} else {string webapppath = sc.getRealPath ("/"); string log4jprop = webapppath + l oG4Jlocation; file yomamAyesthisshissyomama = loG4jlocation; file yomamAyesthisshissyomeMa = ); ** " + LOG4JPROP +" File tidak ditemukan, jadi diinisialisasi dengan BasicConfigurator "); BasicConfigurator.configure ();}} super.init (config);} /*** @Leng Respons httpservletResponse) */ lindung void doGet (permintaan httpservletrequest, httpservletresponse response) melempar servletException, ioException {// TODO Metode yang dihasilkan auto (HTTTPSPREPPSPSPREVED, HTTPONSPREVED, HTTPONSPRESSPPS, HTTPONSPERPS, HTTPONSVEST, HTTPONSPREVED, HTTPONSPREVED (HTTTPSPREVED (HTTPREPREPS (HTTPONSEVED (HTTPONSEVED (HTTPONSEVED (HTTPREPREPS (HTTPREPREPS ( DOPOST (permintaan httpservletRequest, respons httpservletResponse) Throw S ServletException, IoException {// TODO Metode yang dihasilkan secara otomatis}}}Panggil log log4jtestservlet, java
Paket Com.MUCFC; http .httpservletRequest; SerialVersionuid = 1L; * * * @see servlet#init (servletconfig) */ public void init (servletConfig config) melempar servletException {// TODO Metode yang dihasilkan secara otomatis}/ ** * @ lihat httpservlet#doget (httpservletRequest, httpservletseResse response) * DoGet void yang dilindungi (permintaan httpservletRequest, respons httpservletResponse) melempar ServletException, IoException {// Rekam Informasi Level Debug Logger.debug ("Ini Debug M Essage."); message ."); // Record error level information logger.error("This is error message."); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpservletResponse response) melempar servletException, ioException {doGet (request, response);Berikutnya berjalan, mari kita lihat hasilnya:
Hasil output:
5. Gunakan log4j di musim semi
Di sini kita perlu mengimplementasikan penggunaan musim semi dalam proyek web untuk menggunakan log4j
(1) Sambungkan ke proyek di atas dan kemudian impor paket pegas
(2) Web.xml ditambahkan
<!-Set Root Directory-> <Context-param> <Param-name> WebApprootkey </param-name> <param-value> webapp.root </param-value> </context-param> <sontext- Param> <Param-name> LOG4JConfigLocation </param-name> <Param-Value> /Web-inf/classes/Log4j.properties </param-value> </context-param> <!-3000 berarti satu pengawas pembuka pembukaan pembukaan pembukaan> Utas memindai file konfigurasi berubah setiap 60 detik; > </context-param> <dengarerer> <Distener-Class> org.springframework.web.util.log4jconfigListener </ listener-class> </listener>
Seluruh konten adalah sebagai berikut:
<? Xml Version = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http: // java .sun.com/xml/ns/javaee "xsi: schemalocation =" http://java.sun.com/xml/ns/javaee/web-app_3_0 .xsd "id =" webapp_id "version =" 3.0 "> <lplay-name> Loglearning </splay- . mucfc.log4jinitservlet </servlet-class> <in-param> <param-name> log4j-properties-location </param-name> <param-value> /web-inf/classes/log4j.p rooperties </param- Value> </init-param> <Boad-on-startup> 1 </boad-on-tartup> </servlet>-> <servlet-Mapping> <servlet-name> LOG4JTESTSERVLET </servlet-name> <url -POLA>/TEST </RURL-PATERS> </Servlet-Mapping> <!-Spring Container Loading-> <dresinger> <Distener-Class> org.springframework.web.context.contextLoaderererer </daftar ener-class > </listener> <context-param> <param-name> ContextConfigLocation </param-name> <param-value> classPath: applicationContext.xml </param-value> </context-par aM> <!-set Root Directory--> <Context-param> <Param-name> webapprootkey </param-name> <param-value> webapp.root </param-value> </context-param> <Context-param> <param- Name> LOG4JConfigLocation </param-name> <param-value> /web-inf/classes/log4j.properties </param-value> </context-param> <!-3000 berarti membuka utas pengawas untuk memindai konfigurasi File setiap 60 detik berubah; Param> <listener> <Distener-Class> org.springframework.web.util.log4jConfigListener </engeaner-class> </engeaner> </web-app>
Di sini log4jinitservlet.java setara dengan tidak berguna.
(2) ApplicationContext.xml
Tidak ada konten:
<? xml versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.orgs /2001/xmlschema-instance "xmlns: context =" http://www.springframework.org/schema/context "xmlns: aop =" http://www.spramewework.org/sche ma/aop "xsi: schemaloce =sche ma/aop" xsi: schemaloce =sche ma/aop "xsi: schemaloce =sche ma/aop" xsi: clea: clea: coloce =sche ma/aop "xsi: clemaloce =sche ma/aop": coloce =sche "xsi: coloce =sche" xsi: coloce =scre "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-weans-3.2.xsdhtp:/www.springframework.org/schema/aophtp:/www.springframework.org/schema/aophtp:/www.springframework.org/schema/aophtp:/www.springframework.org/schema/aophtp:/www.spring Springframework.org/schema/aop/spring-aop-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/cont/spring-context-3.2.xsd "> </tobel>
(3) Dengan cara ini, log akan dimulai dengan jendela pegas
Setelah program dijalankan, log akan dicetak secara otomatis
log.log
error.log kosong karena hanya mencetak informasi di atas tingkat kesalahan
Masukkan http: // localhost: 8080/loglearning2/tes oleh browser
Kemudian buka file
Tutorial terperinci tentang Java Log4j ada di sini.