1.مزايا Log4j
Log4j هو مشروع مفتوح المصدر لـ Apache، باستخدام Log4j، يمكننا التحكم في موقع تسليم معلومات السجل؛ يمكننا أيضًا التحكم في تنسيق الإخراج لكل سجل، من خلال تحديد مستوى كل معلومات السجل، يمكننا التحكم في السجل بشكل أكبر عملية التوليد. والشيء الأكثر إثارة للاهتمام هو أنه يمكن تكوينها بمرونة من خلال ملف التكوين دون تعديل رمز التطبيق.
فوائد log4j هي:
(1) من خلال تعديل ملف التكوين، يمكنك تحديد وجهة وحدة تحكم معلومات السجل، والملف، ومكون واجهة المستخدم الرسومية، وحتى خادم المقبس، ومسجل أحداث NT، وبرنامج UNIX Syslog، وما إلى ذلك.
(2) من خلال تعديل ملف التكوين، يمكنك تحديد مستوى كل رسالة سجل للتحكم في إخراجها. خلال مرحلة تطوير النظام، يمكن طباعة معلومات السجل التفصيلية لتتبع تشغيل النظام، وبعد استقرار النظام، يمكن إيقاف تشغيل إخراج السجل، وبالتالي تتبع تشغيل النظام مع تقليل التعليمات البرمجية غير المرغوب فيها (System.out.println(.. ....)انتظر).
(3) يتطلب استخدام log4j آلية سجل موحدة للنظام بأكمله، مما يساعد على تخطيط النظام.
2. ملف التكوين
يتكون Log4j من ثلاثة مكونات مهمة: أولوية معلومات السجل، ووجهة إخراج معلومات السجل، وتنسيق إخراج معلومات السجل. تتضمن أولويات معلومات السجل من الأعلى إلى الأدنى FATAL، وERROR، وWARN، وINFO، وDEBUG، وTRACE، وALL، والتي تُستخدم لتحديد أهمية معلومات السجل هذه على التوالي؛ وتحدد وجهة إخراج معلومات السجل ما سيفعله السجل تتم طباعتها على وحدة التحكم أو في الملف، ويتحكم تنسيق الإخراج في محتوى عرض معلومات السجل.
2.1 أولوية معلومات السجل
يوصي Log4j باستخدام أربعة مستويات فقط، والأولويات من الأعلى إلى الأدنى هي الخطأ والتحذير والمعلومات والتصحيح. من خلال المستويات المحددة هنا، يمكنك التحكم في تشغيل وإيقاف المستوى المقابل لمعلومات السجل في التطبيق. إذا تم تعريف مستوى INFO هنا، فلن تتم طباعة جميع معلومات السجل الموجودة أسفل مستوى INFO في التطبيق.
2.2 استخدام مصادر المخرجات
يعد تمكين طلبات التسجيل أو تعطيلها بشكل انتقائي جزءًا فقط من وظيفة Log4j. يسمح Log4j بإخراج طلبات التسجيل إلى مصادر إخراج متعددة. في مصطلحات Log4j، يُطلق على مصدر الإخراج اسم المُلحق.
يتضمن المُلحق وحدة التحكم والملفات ومكونات واجهة المستخدم الرسومية وخوادم المقبس البعيدة وJMS وNT Event Loggers وشياطين UNIX Syslog البعيدة (خدمة سجل الخلفية لـ UNIX البعيد). ويمكنه أيضًا التسجيل بشكل غير متزامن. يمكن للمسجل تعيين أكثر من مُلحق واحد. أضف مُلحقًا إلى مُسجل معين باستخدام طريقة addAppender. بالنسبة لمسجل معين، تتم إعادة توجيه كل طلب سجل صالح إلى جميع ملحقي المسجل وملحقي المسجل الأصلي للمسجل.
2.2.1 تطبيق وحدة التحكم
إذا تم استخدام ConsoleAppender، فستتم كتابة معلومات السجل إلى Console. التأثير يعادل طباعة المعلومات مباشرة إلى System.out.
2.2.2 تطبيق الملف
باستخدام FileAppender، ستتم كتابة معلومات السجل إلى الملف المحدد. يجب أن يكون هذا الموقف أكثر استخدامًا. وفقًا لذلك، يجب تحديد اسم ملف إخراج السجل في ملف التكوين. يحدد التكوين التالي اسم ملف السجل log.txt.
log4j.appender.appendername.File=log.txt لاحظ أنه يتم استبدال اسم الملحق بالاسم المستعار للملحق في التكوين المحدد.
ملاحظة: مشكلة في مسار ملف السجل المحدد
2.2.3 تطبيق DailyRolling
يمكنك استخدام FileAppender لإخراج معلومات السجل إلى ملف، ولكن إذا كان الملف كبيرًا جدًا، فسيكون من غير المناسب قراءته. في هذا الوقت يمكنك استخدام DailyRollingAppender. يمكن لـ DailyRollingAppender إخراج معلومات السجل إلى ملفات مفصولة حسب التاريخ. سيقوم ملف التكوين بإنشاء ملف سجل كل يوم (يمكن ضبط الوقت)، وكل ملف سجل يسجل معلومات السجل لذلك اليوم فقط:
انسخ رمز الكود كما يلي:
log4j.appender.appendername=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Aappendername.file=log
log4j.appender.appendername.DatePattern='.'yyyy-MM-dd
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern= %5r %-5p %c{2} - %m%n
2.2.4 تطبيق رولينج فايل
يتم إنشاء ملف جديد عندما يصل حجم الملف إلى الحجم المحدد.
انسخ رمز الكود كما يلي:
og4j.appender.appendername=org.apache.log4j.RollingFileAppender
log4j.appender.appendername.File= ../logs/rlog.log
#التحكم في الحد الأقصى لحجم ملف السجل
log4j.appender.appendername.MaxFileSize=100KB
# ملفات سجل الأرشيف (ملف نسخة احتياطية واحد هنا)
log4j.appender.appendername.MaxBackupIndex=1
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern=%p %t %c - %m%n
يحدد ملف التكوين هذا اسم ملحق مصدر الإخراج، وهو ملف سجل دوار. أكبر ملف هو 100 كيلو بايت. عندما يصل ملف السجل إلى الحد الأقصى للحجم، سيقوم Log4J تلقائيًا بإعادة تسمية rlog.log إلى rlog.log.1، ثم إعادة إنشاء ملف rlog.log جديد، والتدوير بالتسلسل.
2.2.5 تطبيق الكاتب
أرسل معلومات السجل إلى أي مكان محدد بتنسيق الدفق.
2.3 تكوين التخطيط
يحدد التخطيط نمط إخراج معلومات السجل.
2.3.1 نمط التخطيط
انسخ رمز الكود كما يلي:
org.apache.log4j.HTMLLayout (التخطيط بتنسيق جدول HTML)،
org.apache.log4j.PatternLayout (يمكن تحديد أنماط التخطيط بمرونة)،
org.apache.log4j.SimpleLayout (يحتوي على سلسلة المستوى والمعلومات الخاصة بمعلومات السجل)،
org.apache.log4j.TTCCLayout (يحتوي على معلومات حول وقت إنشاء السجل والخيط والفئة وما إلى ذلك)
2.3.2 التنسيق
انسخ رمز الكود كما يلي:
%m يقوم بإخراج الرسالة المحددة في الكود
%p أولوية الإخراج، وهي DEBUG، INFO، WARN، ERROR، FATAL
%r يقوم بإخراج عدد المللي ثانية المستغرقة من بدء تشغيل التطبيق إلى إخراج معلومات السجل.
يقوم %c بإخراج الفئة التي ينتمي إليها، وعادةً ما يكون الاسم الكامل للفئة.
يقوم %t بإخراج اسم مؤشر الترابط الذي أنشأ حدث السجل
يقوم %n بإخراج حرف إرجاع وتغذية السطر، وهو "rn" على النظام الأساسي لـ Windows و"n" على النظام الأساسي Unix.
يقوم %d بإخراج تاريخ أو وقت نقطة وقت السجل. التنسيق الافتراضي هو ISO8601. يمكنك أيضًا تحديد التنسيق بعد ذلك، مثل: %d{yyy MMM dd HH:mm:ss,SSS}. : 18 أكتوبر 2002. 22:10:28921
%l يقوم بإخراج الموقع الذي حدث فيه حدث السجل، بما في ذلك اسم الفئة ومؤشر الترابط الذي حدث فيه ورقم السطر في التعليمات البرمجية. مثال: Testlog4.main(Test Log4.java:10)
3. قم بتعيين مستويات إخراج السجل للملحقين المختلفين
ويمكن تحقيق ذلك عن طريق تعديل عتبة المُلحق في التكوين، مثل المثال التالي:
ملف التكوين:
log4j.rootLogger = تصحيح، A، B، C
#الإخراج إلى وحدة التحكم
log4j.appender.A = org.apache.log4j.ConsoleAppender
log4j.appender.A.Target = System.out
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = %p %t %c - %m%n
# الإخراج إلى ملف السجل
log4j.appender.B = org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File = logs/log.log
log4j.appender.B.Append = true
log4j.appender.B.Threshold = DEBUG # سجلات الإخراج أعلى من مستوى EBUG
log4j.appender.B.layout = org.Apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern = %p %t %c - %m%n
# حفظ معلومات الاستثناء في ملف منفصل
log4j.appender.C = org.apache.log4j.DailyRollingFileAppender
log4j.appender.C.File = logs/error.log # اسم ملف سجل الاستثناء
log4j.appender.C.Append = true
log4j.appender.C.Threshold = ERROR # فقط سجلات الإخراج أعلى من مستوى الخطأ
log4j.appender.C.layout = org.Apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = %p %t %c - %m%n
مثال:
انسخ رمز الكود كما يلي:
الفئة العامة TestLog4j
{
الفراغ العام الثابت الرئيسي (String[] args)
{
PropertyConfigurator.configure("D:/Code/conf/log4j.properties");
المسجل logger = Logger.getLogger(TestLog4j.class);
logger.debug("تصحيح");
logger.error("خطأ");
}
}