تهيئة Log4j لضغط السجلات (Compression) في الإصدارات الحديثة

مقدمة

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


1. لماذا يجب استخدام ضغط السجلات؟

في المشاريع الكبيرة والخدمات عالية الحركة، تزداد السجلات بسرعة وتشغل مساحة كبيرة. من فوائد الضغط:

اشترِ سيرفر افتراضي بأفضل سعر من راديب، انقر هنا

  • تقليل حجم ملفات السجلات: يمكن تقليل الحجم حتى 90%.
  • تحسين إدارة التخزين: يقلل الحاجة لمساحة كبيرة.
  • سرعة أعلى في نقل السجلات: الملفات المضغوطة أسرع في النقل.

2. مقدمة عن RollingFileAppender في Log4j 2

يُستخدم RollingFileAppender لإدارة السجلات في Log4j 2، حيث يقوم بأرشفة الملفات تلقائيًا عند الوصول إلى حجم أو وقت محدد.

ملاحظة: تُدعم صيغ الضغط مثل ZIP و GZ.


3. إعدادات Log4j 2 للضغط

لتهيئة الضغط، قم بإعداد RollingFileAppender في ملف log4j2.xml كما يلي:

سجل نطاقك فورًا بثلاث نقرات في راديب، انقر هنا

مثال للإعدادات في log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <!-- تعريف RollingFileAppender لإدارة السجلات وضغطها -->
        <RollingFile name="RollingFileAppender"
                     fileName="logs/app.log"
                     filePattern="logs/archive/app-%d{yyyy-MM-dd}.log.gz">
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern>
            </PatternLayout>
            <Policies>
                <!-- ضغط السجلات عند الوصول إلى 10MB -->
                <SizeBasedTriggeringPolicy size="10MB"/>
                <!-- ضغط السجلات يوميًا -->
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            </Policies>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="info">
            <AppenderRef ref="RollingFileAppender"/>
        </Root>
    </Loggers>
</Configuration>
XML

شرح الإعدادات:

  1. RollingFileAppender: ينشئ ملف السجل الرئيسي ويقوم بالأرشفة التلقائية.
  2. filePattern: يحدد اسم الملف المضغوط كـ app-YYYY-MM-DD.log.gz.
  3. SizeBasedTriggeringPolicy: يحدد حجم 10 ميجابايت للأرشفة.
  4. TimeBasedTriggeringPolicy: ينشئ ملفًا جديدًا يوميًا.

4. اختبار الإعدادات ببرنامج جافا

نفّذ البرنامج التالي لإنشاء سجلات واختبار الضغط:

اشترِ استضافة cPanel و DirectAdmin من راديب، انقر هنا

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

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

    public static void main(String[] args) {
        for (int i = 0; i < 10000; i++) {
            logger.info("هذا سجل تجريبي رقم " + i + ".");
        }
        System.out.println("تم إنشاء السجلات. الرجاء فحص مجلد logs.");
    }
}
Java

خطوات التنفيذ:

  1. شغّل الكود في مشروع جافا.
  2. تفقد ملف logs/app.log.
  3. بعد الوصول إلى 10MB أو نهاية اليوم، سيُضغط الملف السابق بصيغة GZ.

5. إعدادات متقدمة (اختيارية)

5.1. الضغط بصيغة ZIP

غيّر قيمة filePattern لاستخدام ZIP:

filePattern="logs/archive/app-%d{yyyy-MM-dd}.zip"
XML

5.2. حذف السجلات القديمة تلقائيًا

استخدم DefaultRolloverStrategy لحذف السجلات الأقدم من 30 يومًا:

<DefaultRolloverStrategy max="30"/>
XML

6. الخاتمة

في هذه المقالة، شرحنا تهيئة Log4j 2 لضغط السجلات، وكيفية استخدام RollingFileAppender للأرشفة التلقائية. ننصح باستخدام الضغط في المشاريع الكبيرة وإضافة سياسات متقدمة مثل الحذف التلقائي.

اقتراحاتنا:

استخدم ضغط السجلات لتحسين التخزين.
أضف سياسات متقدمة حسب الحاجة.

للاستفسارات، تواصل مع خبرائنا عبر نظام التذاكر في راديب!

هل كانت المقالة مفيدة ؟ 66 أعضاء وجدوا هذه المقالة مفيدة (66 التصويتات)