تسجيل السجلات لجافا: أفضل الحلول (Log4j, SLF4J, Logback, java.util.logging)

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تسجيل السجلات لجافا: أفضل الحلول



تسجيل السجلات هو جزء لا يتجزأ من تطوير أي تطبيق جافا جاد. فهو يسمح بتتبع الأخطاء، تحليل سلوك النظام، وجمع المقاييس. في جافا، توجد عدة حلول ناضجة، لكل منها خصائصه. في هذه المقالة، سنستعرض أربعة مناهج رئيسية: Log4j 2، SLF4J (كواجهة)، Logback، والمدمج java.util.logging.



1. java.util.logging (JUL) — الحل المدمج

يأتي JUL مع JDK، وبالتالي لا يتطلب تبعيات إضافية. ومع ذلك، فإن وظائفه محدودة مقارنة بالمكتبات الخارجية. يتم تعيين التكوين عادةً من خلال ملف logging.properties.



مثال على الإعداد والاستخدام:

// logging.propertieshandlers = java.util.logging.ConsoleHandler.level = INFOjava.util.logging.ConsoleHandler.level = FINEST


import java.util.logging.Logger;

public class JulExample { private static final Logger logger = Logger.getLogger(JulExample.class.getName());

public static void main(String[] args) { logger.info("هذه رسالة معلوماتية"); logger.warning("تحذير!"); logger.fine("معلومات تصحيح مفصلة (مستوى FINEST)"); }}

الإيجابيات: لا تبعيات، بساطة.

السلبيات: مرونة محدودة، أداء أقل، صعوبة في الضبط الدقيق.



2. Log4j 2 — حل قوي وحديث

Log4j 2 هو خليفة Log4j 1.x الشهير. يقدم تسجيلاً غير متزامن، دعم JSON، مرشحات، والعديد من الملحقات (ملفات، قواعد بيانات، Kafka).



الإضافة (Maven):

<dependency>    <groupId>org.apache.logging.log4j</groupId>    <artifactId>log4j-core</artifactId>    <version>2.20.0</version></dependency>


مثال على التكوين (log4j2.xml):

<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN">    <Appenders>        <Console name="Console" target="SYSTEM_OUT">            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>        </Console>    </Appenders>    <Loggers>        <Root level="info">            <AppenderRef ref="Console"/>        </Root>    </Loggers></Configuration>


import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;

public class Log4j2Example { private static final Logger logger = LogManager.getLogger(Log4j2Example.class);

public static void main(String[] args) { logger.debug("تصحيح: دخول إلى الطريقة main"); logger.info("تم تشغيل التطبيق"); try { int result = 10 / 0; } catch (ArithmeticException e) { logger.error("خطأ في القسمة على صفر", e); } }}

الإيجابيات: أداء عالٍ (ملحقات غير متزامنة)، تكوين مرن، دعم تعدد المهام.

السلبيات: الحاجة لإضافة التبعية يدويًا، تعقيد التكوين للمبتدئين.



3. Logback — خليفة Log4j 1.x

يعتبر Logback الوريث المباشر لـ Log4j وقد طوره نفس المؤلف. إنه أسرع، ويدعم SLF4J بشكل مدمج، وإعادة تحميل التكوين تلقائيًا.



الإضافة (Maven):

<dependency>    <groupId>ch.qos.logback</groupId>    <artifactId>logback-classic</artifactId>    <version>1.4.14</version></dependency>


مثال على التكوين (logback.xml):

<                    

توصيات