logo

Log4j مقابل SLF4J

SLF4J (واجهة تسجيل بسيطة لجافا) هي واجهة برمجة التطبيقات (API) المصممة لمنح وصول عام إلى العديد من أطر التسجيل، وlog4j هو واحد منها.

إنها في الأساس طبقة تجريد. إنه ليس تنفيذ التسجيل. هذا يعني أنك إذا كنت تكتب مكتبة وتستخدم SLF4J، فيمكنك منح هذه المكتبة لشخص آخر لاستخدامها ويمكنه اختيار تطبيق التسجيل الذي سيتم استخدامه مع SLF4J، على سبيل المثال، log4j أو Java logging API. يتم استخدامه لمنع التطبيقات من الاعتماد على واجهات برمجة تطبيقات التسجيل المختلفة تمامًا كما تستخدم المكتبات التي تعتمد عليها.

ومع ذلك، فإننا نوضح الفرق بين Log4J وSLF4J الذي يستحق إجابة سطر واحد فقط. أي أن السؤال نفسه خطأ. SLF4J وLog4J مختلفان، أو أنهما ليسا مكونات متشابهة. كما هو محدد في الاسم، SLF4J عبارة عن واجهة تسجيل بسيطة لـ Java. إنه ليس مكون تسجيل، وحتى أنه لا يقوم بالتسجيل الفعلي. إنها مجرد طبقة تجريد لمكون التسجيل الأساسي.

باش للحلقة من 1 إلى 10

في حالة Log4j ، إنه مكون تسجيل، ويقوم بالتسجيل المطلوب القيام به. لذا يمكننا القول أن SLF4J وLog4J هما شيئان مختلفان منطقيًا.

Log4j مقابل SLF4J

الآن، كل ما عليك هو تحديد إطار التسجيل الذي تريد استخدامه في وقت التشغيل. للقيام بذلك، سوف تحتاج إلى تضمين ملفين jar:

  • SLF4J ملف جرة الربط
  • ملفات جرة إطار التسجيل المطلوبة

على سبيل المثال، لاستخدام log4j في مشروعك، ستحتاج إلى تضمين ملفات jar الموضحة أدناه:

واجهة في جافا
  • slf4j-log4j12-1.7.12.jar
  • log4j-1.2.17.jar

بمجرد وضع ملفي jar في مسار فئة التطبيق الخاص بك، سيكتشفه SLF4J تلقائيًا ويبدأ في استخدام log4j لمعالجة بيانات السجل بناءً على التكوين الذي قدمته في ملف تكوين log4j.

على سبيل المثال، أدناه الكود الذي يمكنك كتابته في ملف فئة المشروع الخاص بك:

 import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info('Hello World'); } } 

لماذا يعتبر SLF4J أفضل من Log4J؟

من الصعب دائمًا تفضيل واحد بين SLF4J وLog4j. إذا كان لديك خيار، أود أن أقترح عليك؛ يعد تجريد التسجيل دائمًا أفضل من إطار التسجيل. إذا كنت تستخدم تجريدًا للتسجيل، SLF4J على وجه الخصوص، فيمكننا الترحيل إلى أي إطار عمل للتسجيل نطلبه في وقت النشر دون اختيار تبعية فردية.

بوابة الخروج

فيما يلي الأسباب الجيدة بما يكفي لاختيار SLF4J بدلاً من Log4j:

  • من الأفضل دائمًا استخدام التجريد.
  • SLF4J هي مكتبة مفتوحة المصدر أو مكتبة داخلية تجعلها مستقلة عن أي تطبيق تسجيل معين، مما يعني عدم الحاجة إلى إدارة تكوينات تسجيل متعددة لمكتبات متعددة.
  • يوفر SLF4J تسجيلًا يعتمد على العنصر النائب، مما يعمل على تحسين إمكانية قراءة التعليمات البرمجية عن طريق إزالة عمليات التحقق مثل isInforEnabled() وisDebugEnabled() وما إلى ذلك.
  • باستخدام طريقة التسجيل الخاصة بـ SLF4J، نقوم بتأجيل تكلفة إنشاء رسائل التسجيل (السلسلة)، حتى تحتاج إليها، وهو أمر فعال لوحدة المعالجة المركزية والذاكرة.
  • نظرًا لأن SLF4J يستخدم عددًا أقل من السلاسل المؤقتة، فهذا يعني عملًا أقل لمجمع البيانات المهملة، مما يعني إنتاجية وأداء أفضل لتطبيقك.

لذا، فإن SLF4J لا يحل محل log4j؛ كلاهما يعملان معًا. إنه يزيل الاعتماد على log4j من تطبيقك ويسهل استبداله في المستقبل بمكتبة أكثر قدرة.