LOG4J mengeluarkan beberapa file log khusus
Jika Anda perlu mengeluarkan file log independen dalam aplikasi aktual, bagaimana Anda dapat memisahkan konten yang diperlukan dari log asli dan membentuk file log terpisah?
Mari pertama -tama lihat file log4j.properties umum, yang mencatat log di file konsol dan test.log:
Salinan kode adalah sebagai berikut:
log4j.rootlogger = debug, stdout, logfile
LOG4J.APPENDER.STDOUT = org.apache.log4j.consoleAppender
LOG4J.Appender.stdout.layout = org.apache.log4j.patternlayout
LOG4J.Appender.stdout.layout.conversionPattern =%d%p [%c] -%m%n
LOG4J.Appender.LogFile = org.apache.log4j.rollingfileAppender
LOG4J.Appender.logfile.file = log/test.log
LOG4J.Appender.LogFile.MaxFileSize = 128MB
LOG4J.Appender.logfile.maxbackupIndex = 3
LOG4J.Appender.LogFile.Layout = org.apache.log4j.patternLayout
LOG4J.Appender.logfile.layout.conversionPattern =%d {yyyy-mm-dd hh: mm: ss}%-5p [%t]%c.%m (%l)-%m%n
Bagaimana jika beberapa file log perlu output di kelas yang sama? Faktanya, kebenarannya sama.
Salinan kode adalah sebagai berikut:
private static log logger1 = logfactory.getLog ("mylogger1");
private static log logger2 = logfactory.getLog ("mylogger2");
Konfigurasi di log4j.properties adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
log4j.logger.mylogger1 = debug, test1
LOG4J.Appender.test1 = org.apache.log4j.fileAppender
LOG4J.Appender.test1.file = log/test1.log
LOG4J.Appender.test1.layout = org.apache.log4j.patternlayout
LOG4J.Appender.test1.layout.conversionPattern =%d {yyyy-mm-dd hh: mm: ss}%-5p [%t]%c.%m (%l)-%m%n
log4j.logger.mylogger2 = debug, test2
LOG4J.Appender.test2 = org.apache.log4j.fileAppender
LOG4J.Appender.test2.file = log/test2.log
LOG4J.Appender.test2.layout = org.apache.log4j.patternlayout
LOG4J.Appender.test2.layout.conversionPattern =%d {yyyy-mm-dd hh: mm: ss}%-5p [%t]%c.%m (%l)-%m%n
Log yang berbeda harus digunakan untuk log yang berbeda (misalnya, logger1.info ("ABC") harus digunakan untuk outputing ke test1.log).
Masalah lain adalah bahwa log khusus ini adalah output ke log yang dikonfigurasi oleh log4j.rootlogger secara default. Jangan khawatir, ini sakelar:
log4j.additivity
Ini digunakan untuk mengatur apakah akan mengeluarkannya ke log yang dikonfigurasi oleh log4j.rootlogger pada saat yang sama.
Namun, metode ini memiliki cacat kecil, yaitu nama kelas dalam log yang dicetak hanya bisa mylogger atau mylogger2.
2 jalur konfigurasi dinamis
Jika jalur log yang diperlukan oleh program perlu terus diubah, dan tidak mungkin untuk mengubah file konfigurasi setiap saat, Anda dapat menggunakan variabel lingkungan untuk menyelesaikannya.
Konfigurasi log4j adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
LOG4J.ROOTLOGGER = DEBUG, INFOGOL, DEBUGLOG
#info log
LOG4J.Appender.infolog = org.apache.log4j.dailyrollingfileAppender
LOG4J.Appender.infolog.file = $ {LOG.DIR}/$ {LOG.Info.File}
LOG4J.Appender.infolog.DatePattern = .yyyy-mm-dd
LOG4J.Appender.infolog.threshold = info
LOG4J.Appender.infolog.layout = org.apache.log4j.patternlayout
LOG4J.Appender.infolog.layout.conversionPattern =%d {yyyy-mm-dd hh: mm: ss}%-5p [%t]%c.%m (%l)-%m%n
#debug log
LOG4J.Appender.debuglog = org.apache.log4j.rollingfileAppender
LOG4J.Appender.DEBUGLOG.FILE = $ {LOG.DIR}/$ {LOG.DEBUG.FILE}
LOG4J.APPENDER.DEBUGLOG.THRESHOLD = DEBUG
LOG4J.Appender.Debuglog.MaxFileSize = 128MB
LOG4J.Appender.debuglog.maxbackupIndex = 3
LOG4J.Appender.debuglog.layout = org.apache.log4j.patternlayout
LOG4J.Appender.debuglog.layout.conversionPattern =%d {yyyy-mm-dd hh: mm: ss}%-5p [%t]%c.%m (%l)-%m%n
Pada saat ini, sebelum menggunakan log untuk mencetak log, Anda perlu menggunakan sistem untuk menentukan jalur output dan variabel lingkungan nama file:
Salinan kode adalah sebagai berikut:
System.setProperty ("log.dir", logdir);
System.setProperty ("log.info.file", infologfileName);
System.setProperty ("log.debug.file", debuglogfileName);
Lampiran: Arti format parameter pola
%c Nama lengkap kelas yang menjadi milik informasi log
%d output Tanggal atau waktu dari titik waktu log. : 2013-8-19-22:10:28
%f nama kelas kelas yang dimiliki oleh informasi log
%l Peristiwa log output terjadi, yaitu pernyataan bahwa output informasi log adalah di mana baris kelasnya berada
%m output informasi yang ditentukan dalam kode, seperti pesan dalam log (pesan)
%n outputs carriage return line break, windows platform is "/r/n", dan unix platform adalah "/n"
%P Output Prioritas, mis. Debug, info, peringatkan, kesalahan, fatal. Jika output dengan memanggil debug (), itu adalah debug, dan seterusnya
%r Output Jumlah milidetik yang diambil dari awal aplikasi untuk mengeluarkan informasi log
%t mengeluarkan nama utas yang menghasilkan acara log