1. ملف التكوين
التنسيق الأساسي لملف التكوين Log4J هو كما يلي:
انسخ رمز الكود كما يلي:
# تكوين مسجل الجذر
log4j.rootLogger = [المستوى]، appenderName1، appenderName2، ...
# تكوين وجهة إخراج معلومات السجل Appender
log4j.appender.appenderName = full.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.optionN = valueN
# تكوين تنسيق (تخطيط) معلومات السجل
log4j.appender.appenderName.layout = full.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
حيث [المستوى] هو مستوى إخراج السجل، هناك 5 مستويات إجمالاً:
انسخ رمز الكود كما يلي:
قاتل 0
خطأ 3
تحذير 4
معلومات 6
التصحيح 7
المُلحق هو وجهة إخراج السجل. تتضمن المُلحقات المقدمة بواسطة Log4j ما يلي:
انسخ رمز الكود كما يلي:
org.apache.log4j.ConsoleAppender(console)،
org.apache.log4j.FileAppender(ملف)،
org.apache.log4j.DailyRollingFileAppender (ينشئ ملف سجل كل يوم)،
org.apache.log4j.RollingFileAppender (ينشئ ملفًا جديدًا عندما يصل حجم الملف إلى الحجم المحدد)،
org.apache.log4j.WriterAppender (يرسل معلومات السجل بتنسيق الدفق إلى أي مكان محدد)
التخطيط: تنسيق إخراج السجل التخطيطات المقدمة من Log4j هي كما يلي:
org.apache.log4j.HTMLLayout (التخطيط بتنسيق جدول HTML)،
org.apache.log4j.PatternLayout (يمكن تحديد أنماط التخطيط بمرونة)،
org.apache.log4j.SimpleLayout (يحتوي على سلسلة المستوى والمعلومات الخاصة بمعلومات السجل)،
org.apache.log4j.TTCCLayout (يحتوي على معلومات حول وقت إنشاء السجل والخيط والفئة وما إلى ذلك)
معلمات الطباعة: يستخدم Log4J تنسيق طباعة مشابهًا لوظيفة printf في لغة C لتنسيق معلومات السجل، كما يلي:
انسخ رمز الكود كما يلي:
%m إخراج الرسالة المحددة في الكود %p أولوية الإخراج، وهي DEBUG، INFO، WARN، ERROR، FATAL
%r إخراج عدد المللي ثانية المستغرقة من بدء تشغيل التطبيق إلى إخراج معلومات السجل %c إخراج الفئة التي ينتمي إليها، عادةً الاسم الكامل للفئة %t إخراج اسم مؤشر الترابط الذي أنشأ حدث السجل %n إخراج حرف إرجاع وتغذية السطر، نظام Windows هو "/r/n"، نظام Unix هو "/n"
يقوم %d بإخراج تاريخ أو وقت نقطة وقت السجل. التنسيق الافتراضي هو ISO8601. يمكنك أيضًا تحديد التنسيق بعد ذلك، مثل: %d{yyy MMM dd HH:mm:ss, SSS}. : 18 أكتوبر 2002. 22:10:28، 921
%l يقوم بإخراج الموقع الذي حدث فيه حدث السجل، بما في ذلك اسم الفئة ومؤشر الترابط الذي حدث فيه ورقم السطر في التعليمات البرمجية. مثال: Testlog4.main(TestLog4.java: 10)
2. تهيئة المسجل في الكود: 1) استدعاء الأسلوب BasicConfigurator.configure() في البرنامج: أضف ConsoleAppender إلى مسجل الجذر، واضبط تنسيق الإخراج على "%-4r [%t] %-5p %c %x - %m%n" من خلال PatternLayout ، وكذلك المستوى الافتراضي لأدوات قطع الأشجار ذات الجذور هو Level.DEBUG.
2) يتم وضع التكوين في الملف، ويتم تمرير اسم الملف من خلال معلمات سطر الأوامر، ويتم تحليله وتكوينه من خلال PropertyConfigurator.configure(args[x]);
3) يتم وضع التكوين في الملف، ويتم تمرير اسم الملف والمعلومات الأخرى من خلال متغيرات البيئة، ويتم استخدام عملية التهيئة الافتراضية لـ log4j للتحليل والتكوين؛
4) يتم وضع التكوين في الملف، ويتم تمرير اسم الملف والمعلومات الأخرى من خلال تكوين خادم التطبيق، ويتم استخدام servlet خاص لإكمال التكوين.
3. قم بتعيين مستوى إخراج السجل للملحقين المختلفين:
عند تصحيح أخطاء النظام، غالبًا ما ننتبه إلى إخراج سجل مستوى الاستثناء فقط، ولكن عادةً ما يتم وضع جميع مستويات الإخراج في ملف واحد إذا كان مستوى إخراج السجل خطأ! ؟ ثم اذهب وابحث عنه ببطء.
في الوقت الحالي، قد نعتقد أنه سيكون أمرًا رائعًا لو تمكنا من إخراج معلومات الاستثناء إلى ملف منفصل. بالطبع، Log4j يوفر بالفعل مثل هذه الوظيفة، نحتاج فقط إلى تعديل عتبة المُلحق في التكوين لتحقيقها، مثل المثال التالي:
[ملف التكوين]
انسخ رمز الكود كما يلي:
### تعيين مستويات السجل ###
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 = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
### إخراج ملف السجل ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## سجلات الإخراج أعلى من مستوى 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.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log ## اسم ملف سجل الاستثناء
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR ## فقط سجلات الإخراج أعلى من مستوى الخطأ !!!
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
[المستخدمة في الكود]
الطبقة العامة TestLog4j {
public static void main(String[] args) {
PropertyConfigurator.configure("D:/Code/conf/log4j.properties");
Logger logger = Logger.getLogger(TestLog4j.class );
logger.debug("تصحيح");
logger.error("خطأ");
}
}
قم بتشغيله ومعرفة ما إذا تم حفظ معلومات الاستثناء في ملف منفصل error.log