1 instruksi konfigurasi Log4j
1.1 File konfigurasi
Log4j dapat diatur secara dinamis melalui program java. Kerugian yang jelas dari metode ini adalah jika Anda perlu mengubah tingkat keluaran log dan informasi lainnya, Anda harus memodifikasi file java dan kemudian mengkompilasi ulang, yang sangat merepotkan;
Log4j juga dapat diatur melalui file konfigurasi. Saat ini, ia mendukung dua format file konfigurasi:
•berkas xml
•file properti (disarankan)
Berikut isi lengkap file konfigurasi log4j:
Copy kode kodenya sebagai berikut:
log4j.rootCategory=INFO, stdout
log4j.rootLogger=info, stdout
### stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=Sistem.keluar
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n
### atur paket ###
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=debug
1.2 Konfigurasikan Logger root
Root logger terutama mendefinisikan level log dan tujuan keluaran yang didukung oleh log4j. Sintaksnya adalah:
log4j.rootLogger = [ level ] , Namapenambahkan, Namapenambahkan, …
Diantaranya, level adalah prioritas logging, yang dibagi menjadi level OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL atau customized.
Disarankan untuk menggunakan empat level saja. Prioritas dari tinggi ke rendah adalah ERROR, WARN, INFO, dan DEBUG.
appenderName menentukan di mana informasi log dikeluarkan, dan beberapa tujuan keluaran dapat ditentukan secara bersamaan.
1.3 Konfigurasikan Appender tujuan keluaran
Appender terutama menentukan di mana informasi log dikeluarkan. Sintaks utamanya adalah:
Copy kode kodenya sebagai berikut:
log4j.appender.appenderName = classInfo
log4j.appender.appenderName.option1 = nilai1
…
log4j.appender.appenderName.optionN = nilaiN
Appender yang disediakan oleh Log4j antara lain sebagai berikut:
•org.apache.log4j.ConsoleAppender(konsol),
•org.apache.log4j.FileAppender(file),
•org.apache.log4j.DailyRollingFileAppender (menghasilkan file log setiap hari),
•org.apache.log4j.RollingFileAppender (menghasilkan file baru ketika ukuran file mencapai ukuran yang ditentukan)
•org.apache.log4j.WriterAppender (mengirim informasi log dalam format streaming ke tempat tertentu)
Ambil ConsoleAppender sebagai contoh, seperti:
Copy kode kodenya sebagai berikut:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=Sistem.keluar
1.4 Konfigurasikan tata letak format informasi log
Layout bertanggung jawab untuk memformat output Appender. Sintaksnya adalah:
Copy kode kodenya sebagai berikut:
log4j.appender.appenderName.layout = info kelas
log4j.appender.appenderName.layout.option1 = nilai1
…
log4j.appender.appenderName.layout.optionN = nilaiN
Diantaranya, layout yang disediakan oleh Log4j antara lain sebagai berikut:
•org.apache.log4j.HTMLLayout (tata letak dalam format tabel HTML),
•org.apache.log4j.PatternLayout (dapat secara fleksibel menentukan pola tata letak),
•org.apache.log4j.SimpleLayout (berisi level dan string informasi informasi log)
•org.apache.log4j.TTCCLayout (berisi informasi waktu pembuatan log, thread, kategori, dll.)
1.5 Tetapkan tingkat keluaran paket
Anda dapat mengatur tingkat keluaran log dari paket yang berbeda.
log4j.logger.packageName=tingkat
Diantaranya, PackageName adalah nama paket sebenarnya, dan level adalah level log, misalnya:
Copy kode kodenya sebagai berikut:
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=debug
2 Log4j dikombinasikan dengan J2ee
2.1 Menggunakan arsitektur pegas
Spring sangat bagus. Ini telah melakukan banyak hal untuk kami. Jika sistem menggunakan kerangka pegas, sangat mudah untuk mengintegrasikan log4j. Ini terutama dibagi menjadi 3 langkah, sebagai berikut:
2.1.1 Tentukan file konfigurasi log4j
Copy kode kodenya sebagai berikut:
log4j.rootCategory=INFO, stdout
log4j.rootLogger=info, stdout
### stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=Sistem.keluar
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n
### masuk ke file ###
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=debug
2.1.2 Definisikan pendengar
Listener perlu didefinisikan di web.xml, yang terutama mencakup: mendefinisikan direktori file konfigurasi log4j dan pendengar log4j, sebagai berikut:
Copy kode kodenya sebagai berikut:
<?xml versi="1.0" pengkodean="UTF-8"?>
<versi aplikasi web="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!--Lokasi file konfigurasi Log4j yang dimuat oleh Spring-->
<param-konteks>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</param-konteks>
<param-konteks>
<param-name>contextConfigLocation</param-name>
<nilai-param>
/WEB-INF/kelas/applicationContext*.xml
</param-nilai>
</param-konteks>
<!--Pemuat konfigurasi log4j pegas-->
<pendengar>
<kelas pendengar>
org.springframework.web.util.Log4jConfigListener
</kelas pendengar>
</pendengar>
<pendengar>
<kelas pendengar>
org.springframework.web.context.ContextLoaderListener
</kelas pendengar>
</pendengar>
<servlet>
<nama-servlet>InitiaServlet</nama-servlet>
<servlet-class>chb.test.web.InitiaServlet</servlet-class>
<muat-saat-startup>1</muat-saat-startup>
</servlet>
<daftar-file-selamat datang>
<file-selamat datang>index.jsp</file-selamat datang>
</daftar-file-selamat datang>
</aplikasi web>
2.1.3 Kelas tes
Copy kode kodenya sebagai berikut:
paket com.dheaven.mip.web;
impor javax.servlet.ServletException;
impor javax.servlet.http.HttpServlet;
import org.apache.log4j.Logger;
kelas publik InitiaServlet memperluas HttpServlet {
log Logger yang dilindungi = Logger.getLogger(InitiaServlet.class);
serial panjang akhir statis pribadiVersionUID = 8550329576989690578L;
/**
* Konstruktor objek.
*/
publik InitiaServlet() {
super();
}
/**
* Penghancuran servlet
*/
kehancuran publik void() {
super.hancurkan();
}
/**
* Inisialisasi servlet
*
* @throws ServletException jika terjadi kesalahan
*/
public void init() melempar ServletException {
log.debug("Server telah dimulai dan log4j telah mulai bekerja");
}
}
2.2 Tidak menggunakan arsitektur pegas
Jika sistem tidak menggunakan pegas, mari kita ambil servlet sebagai contoh. Ini sangat sederhana. Anda cukup mengikuti langkah-langkahnya dan hanya menempelkan kodenya, bukan omong kosong.
2.2.1 Tentukan file konfigurasi log4j
Tempatkan di direktori WEB-INF proyek web, dengan konten berikut:
Copy kode kodenya sebagai berikut:
log4j.rootCategory=INFO, stdout
log4j.rootLogger=info, stdout
### stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=Sistem.keluar
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n
### atur paket ###
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.com.dheaven=debug
2.2.2 Membuat kelas inisialisasi log4j
Copy kode kodenya sebagai berikut:
paket com.dheaven.mip.web;
impor javax.servlet.ServletException;
impor javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;
kelas publik InitLog4j memperluas HttpServlet {
serialVersionUID panjang akhir statis pribadi = 1L;
public void init() melempar ServletException {
Awalan string = getServletContext().getRealPath("/");
awalan = awalan.ganti("//", "/");
String file = getInitParameter("log4j-init-file");
// jika file log4j-init tidak disetel, maka tidak ada gunanya mencoba
jika (berkas != nol) {
PropertyConfigurator.configure(awalan + file);
}
}
}
2.2.3 Tentukan kelas inisialisasi di Web.xml
Copy kode kodenya sebagai berikut:
<servlet>
<nama-servlet>log4j-init</nama-servlet>
<kelas-servlet>chb.test.web.InitLog4j</kelas-servlet>
<init-param>
<nama-param>file-log4j-init</nama-param>
<param-value>WEB-INF/log4j.properties</param-value>
</init-param>
<muat-saat-startup>1</muat-saat-startup>
</servlet>
2.2.4 Kelas tes
Copy kode kodenya sebagai berikut:
paket chb.test.web;
impor javax.servlet.ServletException;
impor javax.servlet.http.HttpServlet;
import org.apache.log4j.Logger;
kelas publik InitiaServlet memperluas HttpServlet {
log Logger yang dilindungi = Logger.getLogger(InitiaServlet.class);
serial panjang akhir statis pribadiVersionUID = 8550329576989690578L;
/**
* Konstruktor objek.
*/
publik InitiaServlet() {
super();
}
/**
* Penghancuran servlet
*/
kehancuran publik void() {
super.hancurkan();
}
/**
* Inisialisasi servlet
*
* @throws ServletException jika terjadi kesalahan
*/
public void init() melempar ServletException {
log.debug("Server telah dimulai dan log4j telah mulai bekerja");
}
}