يقوم Log4J بإخراج ملفات سجل مخصصة متعددة
إذا كنت بحاجة إلى إخراج ملفات السجل المستقلة في التطبيقات الفعلية ، فكيف يمكنك فصل المحتوى المطلوب عن السجل الأصلي وتشكيل ملف سجل منفصل؟
دعونا أولاً نلقي نظرة على ملف log4j.properties شائع ، والذي يسجل تسجيلات في وحدة التحكم واختبار.
نسخة الكود كما يلي:
log4j.Rootlogger = debug ، stdout ، logfile
log4j.appender.stdout = org.apache.log4j.consoleppender
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
ماذا لو كانت ملفات السجل المتعددة تحتاج إلى إخراج في نفس الفئة؟ في الواقع ، الحقيقة هي نفسها.
نسخة الكود كما يلي:
logger logger1 = logfactory.getLog ("mylogger1") ؛
logger 2 = logfactory.getLog ("mylogger2") ؛
التكوين في log4j.properties هو كما يلي:
نسخة الكود كما يلي:
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
يجب استخدام سجلات مختلفة لسجلات مختلفة (على سبيل المثال ، logger1.info ("ABC") يجب استخدامها لإخراجها إلى test1.log).
مشكلة أخرى هي أن هذه السجلات المخصصة يتم إخراجها إلى السجلات التي تم تكوينها بواسطة Log4J.Rootlogger افتراضيًا. لا تقلق ، إليك مفتاح:
log4j.additivity
يتم استخدامه لتعيين ما إذا كان يجب إخراجه إلى السجل الذي تم تكوينه بواسطة Log4J.Rootlogger في نفس الوقت.
ومع ذلك ، فإن هذه الطريقة لها عيب صغير ، أي اسم الفصل في السجل المطبوع يمكن أن يكون MyLogger أو MyLogger2 فقط.
2 مسارات التكوين الديناميكية
إذا كان مسار السجل المطلوب من قبل البرنامج يجب تغييره باستمرار ، ومن المستحيل تغيير ملف التكوين في كل مرة ، يمكنك استخدام متغيرات البيئة لحلها.
تكوين log4j كما يلي:
نسخة الكود كما يلي:
log4j.Rootlogger = debug ، infolog ، debuglog
#info سجل
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 سجل
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
في هذا الوقت ، قبل استخدام السجل لطباعة السجل ، تحتاج إلى استخدام النظام لتحديد مسار الإخراج ومتغيرات بيئة اسم الملف:
نسخة الكود كما يلي:
System.SetProperty ("log.dir" ، logdir) ؛
System.SetProperty ("log.info.file" ، infologfilename) ؛
System.SetProperty ("log.debug.file" ، debuglogfilename) ؛
المرفق: معنى تنسيق المعلمة النمط
٪ C الاسم الكامل للفئة التي تنتمي إليها معلومات السجل
٪ d يخرج تاريخ أو وقت السجل. : 2013-8-19-22:10:28
٪ و اسم الفصل الدراسي الذي تنتمي إليه معلومات السجل
٪ l يحدث حدث سجل الإخراج ، أي أن البيان الذي يخرج معلومات السجل هو صف الدرس الذي يقع فيه
٪ م إخراج المعلومات المحددة في الرمز ، مثل الرسالة في السجل (الرسالة)
٪ n يخرج كسر خط الإرجاع ، نظام Windows هو "/r/n" ، ومنصة UNIX هي "/n"
٪ p أولوية الإخراج ، أي التصحيح ، المعلومات ، تحذير ، خطأ ، قاتلة. إذا تم الإخراج عن طريق الاتصال بـ Debug () ، فهو تصحيح ، وهكذا
٪ r إخراج عدد المللي ثانية المأخوذة من بداية التطبيق لإخراج معلومات السجل
٪ t يخرج اسم مؤشر الترابط الذي يولد حدث السجل