تخطّى إلى المحتوى الرئيسي
ألوان السجلات

Light-Weight Logger: دليل عملي لمكتبة تسجيل مخصصة بلغات C++ وJava وC#

Light-Weight Logger: دليل عملي لمكتبة تسجيل مخصصة بلغات C++ وJava وC#
📑 محتويات المقال
    Reference OS v85 دقائق قراءة١ يوليو ٢٠٢٦informational: فهم أداة تسجيل جديدة وتقييمها وتجربتها عملياً

    Light-Weight Logger: دليل عملي لمكتبة تسجيل مخصصة بلغات C++ وJava وC#

    ستتعلم كيفية تركيب واستخدام Light-Weight Logger في C++ وJava وC# مع تنسيق مخصص وألوان، وتجنب الأخطاء الشائعة، وتقييم ما إذا كانت مناسبة لمشروعك.

    الخلاصة: مكتبة تسجيل خفيفة مفتوحة المصدر تدعم C++ وJava وC#، تتيح تخصيص تنسيق السجلات بالكامل عبر master_style وألوان لكل مستوى. مناسبة للمشاريع الصغيرة والتعليمية، لكنها غير ناضجة للإنتاج. README غير واضح، لذا اتبع الخطوات التقريبية في المقال.
    Light-Weight Logger914 كلمة تقريباًزارو — مكتبة الأدلة العملية
    Light-Weight Logger: دليل عملي لمكتبة تسجيل مخصصة بلغات C++ وJava وC#
    Photo by Tuğba on Pexels
    LIVE PROJECTPenguineDavid/light-weight-logger★ 0

    Show HN: C++, Java and C# light-weight-logger

    رابط المشروع على GitHub ↗

    MAP

    خريطة الصفحة

    اختر القسم الذي تحتاجه الآن

    1. ما هو Light-Weight Logger؟
    2. لمن هذه المكتبة؟ (ومن لا يحتاجها)
    3. المميزات الرئيسية
    4. المتطلبات الأساسية
    5. طريقة التركيب (خطوات تقريبية)
    6. شرح التنسيق المخصص (master_style) والألوان
    7. أمثلة عملية: تسجيل رسائل ERROR وINFO بألوان مختلفة
    8. أخطاء شائعة وحلولها
    9. استخدامات عملية في السوق السعودي/الخليجي
    10. هل يستحق التجربة؟ (تقييم موضوعي)
    11. بدائل مشابهة
    12. الأسئلة الشائعة (FAQ)
    !

    قبل أن تطبق

    الفكرة التي تمنع التسرع

    تخيل أنك تريد تسجيل خطأ في تطبيقك بلون أحمر وتاريخ بتوقيت الرياض، لكن المكتبات الثقيلة تبطئ المشروع. هنا يأتي Light-Weight Logger.

    Q

    أسئلة التشخيص السريع

    قبل أن تطبق، اعرف أين تقف بالضبط

    1. هل مشروعك صغير أو متوسط ولا يحتاج لميزات تسجيل متقدمة؟
    2. هل تريد تحكمًا كاملاً في تنسيق السجلات (ألوان، طوابع زمنية، إلخ)؟
    3. هل تستخدم إحدى اللغات C++ أو Java أو C#؟
    4. هل أنت مستعد لمواجهة README غير واضح وتجربة خطوات تقريبية؟
    5. هل مشروعك إنتاجي كبير أم تجريبي/تعليمي؟
    6. هل تحتاج لدعم لغات أخرى (Python, JavaScript)؟
    7. هل تفضل مكتبة خفيفة بدون اعتماديات خارجية ثقيلة؟

    نظام التشغيل: Input → Process → Output

    INPUT
    رسالة نصية (log message) مع مستوى (مثل ERROR, INFO) وبيانات إضافية (ملف، سطر، thread).
    PROCESS
    تطبيق التنسيق المحدد في master_style على الرسالة، وإضافة الألوان حسب المستخدم.
    OUTPUT
    سطر نصي منسق بالألوان يظهر في الطرفية (console) أو ملف السجل.
    Decision Layer
    اختيار التنسيق المناسب لكل مستوى (مثلاً ERROR باللون الأحمر، INFO بالأزرق).
    Memory Layer
    تخزين التنسيقات المعرفة لكل مستوى في الذاكرة لتطبيقها سريعاً.
    Feedback Loop
    تعديل التنسيقات بناءً على ملاحظات المطور أو تغير احتياجات المشروع.
    M

    لوحة قياس النجاح

    لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه

    المؤشرطريقة القياسإشارة جيدة
    وقت الترجمةقياس وقت بناء المشروع مع المكتبةأقل من 5 ثوانٍ لمشروع صغير
    حجم الملف التنفيذيمقارنة حجم الملف الناتج مع مكتبات أخرىأقل من 1 ميجابايت
    سهولة التخصيصعدد الأسطر اللازمة لتغيير التنسيقسطر واحد فقط (master_style)

    Light-Weight Logger هي مكتبة تسجيل (logging) خفيفة مفتوحة المصدر ظهرت مؤخراً على Hacker News، تدعم لغات C++ وJava وC#. تتيح لك تخصيص تنسيق السجلات بالكامل: الألوان، الطوابع الزمنية، أسماء المستويات، وغيرها. الفكرة الأساسية: بدلاً من استخدام مكتبات ثقيلة مثل Log4j أو NLog في مشروع صغير، يمكنك الاعتماد على هذه المكتبة لتقليل الاعتماديات وتحسين الأداء.

    في هذا الدليل، سنشرح لك كيفية تركيب المكتبة (خطوات تقريبية لأن README غير واضح)، وكيفية تعريف التنسيق المخصص، مع أمثلة عملية تناسب المطور العربي في السعودية والخليج. سنذكر أيضاً الأخطاء الشائعة والبدائل المناسبة.

    ما هو Light-Weight Logger؟

    هي مكتبة تسجيل خفيفة تسمح لك بتحديد تنسيق السجلات بشكل كامل باستخدام سلسلة نصية واحدة (master_style). تدعم إضافة ألوان مختلفة لكل مستوى تسجيل (ERROR, WARNING, INFO, DEBUG) وتضمين الطابع الزمني واسم الملف ورقم السطر. الهدف: تقليل حجم المكتبة وزيادة المرونة مقارنة بالأدوات التقليدية.

    لمن هذه المكتبة؟ (ومن لا يحتاجها)

    إعلان

    تناسب: المطورين الذين يعملون على مشاريع صغيرة أو متوسطة بلغة C++ أو Java أو C#، ويريدون تحكم كامل في تنسيق السجلات دون تحميل المكتبات الثقيلة. أيضاً مناسبة للمشاريع التعليمية أو النماذج الأولية.

    لا تناسب: المشاريع الإنتاجية الكبيرة التي تحتاج إلى ميزات متقدمة مثل التسجيل غير المتزامن، التصفية المعقدة، أو التكامل مع أنظمة المراقبة المركزية. أيضاً إذا كنت تحتاج إلى دعم لغات أخرى (Python, JavaScript) فهذه المكتبة لا تدعمها حالياً.

    المميزات الرئيسية

    • خفيفة الوزن: لا تعتمديات خارجية ثقيلة.
    • تنسيق مخصص بالكامل عبر master_style.
    • دعم الألوان لكل مستوى تسجيل.
    • تضمين الطابع الزمني، اسم الملف، رقم السطر، thread ID.
    • متاحة لثلاث لغات: C++، Java، C#.

    المتطلبات الأساسية

    • مترجم C++ (مثل g++ أو MSVC) أو بيئة Java (JDK 8+) أو .NET SDK (لـ C#).
    • معرفة أساسية بالـ logging في مشروعك.
    • نظام تشغيل: Windows, Linux, macOS (غير مؤكد، لكن الغالب يدعم).

    طريقة التركيب (خطوات تقريبية)

    تنبيه: README الحالي غير واضح تماماً، لذا الخطوات التالية تقريبية بناءً على بنية المشروع. قد تحتاج إلى تعديلها حسب إصدار المكتبة.

    1. استنساخ المستودع: git clone https://github.com/PenguineDavid/light-weight-logger.git
    2. انتقل إلى المجلد الخاص باللغة التي تريدها (مثلاً cd light-weight-logger/cpp).
    3. قم بتضمين الملفات في مشروعك: انسخ ملفات المصدر (مثل logger.h و logger.cpp) إلى مجلد مشروعك.
    4. أضف الملفات إلى قائمة الترجمة (مثلاً في CMake أو Makefile).
    5. ابدأ باستخدام المكتبة كما في الأمثلة أدناه.

    شرح التنسيق المخصص (master_style) والألوان

    master_style هو سلسلة نصية تحدد شكل السجل. العناصر الأساسية:

    • %N: اسم المستوى (مثل ERROR).
    • %D: التاريخ.
    • %T: الوقت.
    • %Z: المنطقة الزمنية.
    • %M: الرسالة الأساسية.
    • %F: اسم الملف.
    • %t: thread ID.
    • %L: رقم السطر.
    • %C: لون البداية (لون العنصر التالي).
    • %c: إعادة تعيين اللون.
    • %S: مسافة.
    • %G: لون رمادي.

    مثال: master_style = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";

    ثم نضيف تنسيقاً لكل مستوى:

    logger.add_format("ERROR", master_style, Colour::RED);
    logger.add_format("INFO", master_style, Colour::BLUE);

    أمثلة عملية: تسجيل رسائل ERROR وINFO بألوان مختلفة

    مثال بلغة C++:

    #include "logger.h"
    
    int main() {
        Logger logger;
        std::string master_style = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";
        logger.add_format("ERROR", master_style, Colour::RED);
        logger.add_format("INFO", master_style, Colour::BLUE);
    
        logger.log("ERROR", "فشل الاتصال بقاعدة البيانات");
        logger.log("INFO", "تم بدء الخدمة بنجاح");
        return 0;
    }

    الخرج المتوقع (في الطرفية):

    [ERROR] [2025-03-28 14:30:00 +03:00] فشل الاتصال بقاعدة البيانات (main.cpp:1:23)
    [INFO] [2025-03-28 14:30:00 +03:00] تم بدء الخدمة بنجاح (main.cpp:1:24)

    مع الألوان: ERROR باللون الأحمر، INFO بالأزرق، الطابع الزمني بالرمادي.

    أخطاء شائعة وحلولها

    الخطأالسببالحل
    عدم ظهور الألوانالطرفية لا تدعم ANSI colorsاستخدم طرفية تدعم الألوان (مثل Windows Terminal, iTerm2)
    خطأ في الترجمة: undefined referenceلم يتم تضمين ملفات المصدر بشكل صحيحتأكد من إضافة logger.cpp إلى قائمة الترجمة
    تنسيق غير صحيحخطأ في كتابة master_styleراجع العناصر المدعومة في README

    استخدامات عملية في السوق السعودي/الخليجي

    • تطبيق محلي لإدارة المخزون: تسجيل عمليات الإضافة والحذف بألوان مختلفة لتسهيل التتبع.
    • تطبيق توصيل طلبات: تسجيل حالة كل طلب (جديد، قيد التوصيل، تم التوصيل) بألوان مخصصة.
    • منصة تعليمية: تسجيل أخطاء الاتصال بقاعدة البيانات بلون أحمر لسرعة التنبيه.

    هل يستحق التجربة؟ (تقييم موضوعي)

    الإيجابيات: خفيف، مرن، مفتوح المصدر، يدعم ثلاث لغات.

    السلبيات: README غير واضح، لا يوجد توثيق كافٍ، غير مناسب للمشاريع الكبيرة، عدد النجوم 0 (مشروع جديد).

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

    بدائل مشابهة

    المكتبةاللغةالمميزاتالعيوب
    spdlogC++سريع، غير متزامن، مرنأثقل قليلاً، منحنى تعلم
    Log4jJavaمستقر، ميزات متقدمةثقيل، معقد للمشاريع الصغيرة
    NLogC#مرن، تكامل مع .NETحجم كبير نسبياً

    الأسئلة الشائعة (FAQ)

    هل Light-Weight Logger يدعم اللغات الأخرى غير C++ وJava وC#؟

    حسب README، لا يدعم حالياً. لكن يمكنك المساهمة في إضافة دعم لغات أخرى.

    كيف يمكن تخصيص ألوان السجلات؟

    استخدم الدالة add_format مع قيمة Colour المناسبة (مثل Colour::RED, Colour::BLUE).

    هل المكتبة مناسبة للمشاريع الإنتاجية الكبيرة؟

    لا، لأنها جديدة وغير مختبرة بشكل كافٍ. استخدمها في المشاريع الصغيرة أو التجريبية.

    ما الفرق بين Light-Weight Logger وLog4j؟

    Light-Weight Logger أخف وزناً وأبسط، لكن Log4j يوفر ميزات أكثر (تصفية، إخراج متعدد، إلخ).

    هل يمكن استخدام المكتبة مع أنظمة التشغيل Linux وWindows وmacOS؟

    من المتوقع، لكن غير مؤكد. جربها على نظامك.

    كيف يمكن المساهمة في تطوير المكتبة؟

    يمكنك فتح issue أو pull request على GitHub.

    هل يوجد توثيق عربي للمكتبة؟

    لا، هذا المقال هو أول دليل عربي.

    ما هي رخصة المكتبة؟

    غير محددة في README. افترض أنها مفتوحة المصدر.

    خاتمة

    Light-Weight Logger مشروع واعد لمطوري C++ وJava وC# الذين يريدون تحكماً دقيقاً في تنسيق السجلات دون تضخيم المشروع. جربه في مشروعك الصغير القادم، وساهم في تحسينه إذا أعجبك. تذكر أن تشارك تجربتك مع المجتمع العربي.

    DO

    Playbook التطبيق

    خطوات عملية مرتبة من التشخيص إلى النتيجة

    خطوة 1

    استنساخ المستودع

    لماذا؟ للحصول على الكود المصدري للمكتبة

    كيف؟ git clone https://github.com/PenguineDavid/light-weight-logger.git

    الناتج: مجلد light-weight-logger يحتوي على الكود

    خطوة 2

    تضمين الملفات في مشروعك

    لماذا؟ لإتاحة استخدام المكتبة في الكود

    كيف؟ انسخ logger.h و logger.cpp (أو الملفات المكافئة للغة) إلى مجلد مشروعك وأضفها إلى قائمة الترجمة (مثل CMake أو Makefile)

    الناتج: الملفات مضمنة وجاهزة للترجمة

    خطوة 3

    تعريف master_style وتنسيق المستويات

    لماذا؟ لتخصيص شكل السجلات حسب احتياجك

    كيف؟ أنشئ سلسلة master_style باستخدام العناصر المدعومة (%N, %D, %T, %Z, %M, %F, %t, %L, %C, %c, %S, %G) ثم استخدم add_format لكل مستوى مع اللون المطلوب

    الناتج: تنسيق مخصص لكل مستوى تسجيل

    خطوة 4

    تسجيل رسالة اختبارية

    لماذا؟ للتحقق من عمل المكتبة والتنسيق

    كيف؟ استخدم logger.log("ERROR", "رسالة اختبار") وشاهد الخرج في الطرفية

    الناتج: سجل ملون بالتنسيق المطلوب

    TMP

    قوالب جاهزة للنسخ

    حوّل القراءة إلى تنفيذ سريع

    قالب C++ أساسي
    #include "logger.h"
    int main() {
        Logger logger;
        std::string master_style = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";
        logger.add_format("ERROR", master_style, Colour::RED);
        logger.add_format("INFO", master_style, Colour::BLUE);
        logger.log("ERROR", "فشل الاتصال بقاعدة البيانات");
        logger.log("INFO", "تم بدء الخدمة بنجاح");
        return 0;
    }
    ERR

    مصفوفة الأخطاء

    اعرف أين يتعثر الناس وكيف تتجنب ذلك

    الخطألماذا يحدث؟التصحيح
    عدم ظهور الألوانالطرفية لا تدعم ANSI colorsاستخدم طرفية تدعم الألوان (Windows Terminal, iTerm2)
    خطأ في الترجمة: undefined referenceلم يتم تضمين ملفات المصدر بشكل صحيحتأكد من إضافة logger.cpp إلى قائمة الترجمة
    تنسيق غير صحيحخطأ في كتابة master_styleراجع العناصر المدعومة في README
    IF

    شجرة القرار

    ماذا تفعل حسب حالتك؟

    إذا: إذا كان مشروعك صغيرًا أو تعليميًا وتريد تحكمًا كاملاً بالتنسيق

    إذن: استخدم Light-Weight Logger

    إذا: إذا كان مشروعك إنتاجيًا كبيرًا أو يحتاج ميزات متقدمة

    إذن: استخدم بدائل مثل spdlog (C++) أو Log4j (Java) أو NLog (C#)

    إذا: إذا كنت تحتاج دعم لغات أخرى

    إذن: ابحث عن مكتبات أخرى تدعم Python/JavaScript

    7D

    خطة تطبيق 7 أيام

    جدول صغير يمنع التسويف

    1. اليوم 1: استنساخ المستودع وقراءة README
    2. اليوم 2: تضمين المكتبة في مشروع اختباري بلغة C++
    3. اليوم 3: تعريف master_style مخصص وتجربة ألوان مختلفة
    4. اليوم 4: إضافة نفس التنسيق لمشروع Java
    5. اليوم 5: إضافة نفس التنسيق لمشروع C#
    6. اليوم 6: اختبار الأخطاء الشائعة وحلها
    7. اليوم 7: تقييم الأداء واتخاذ قرار الاستخدام
    FACT

    حقائق سريعة تحفظها

    نقاط مختصرة ترجع لها لاحقاً

    1. مكتبة خفيفة مفتوحة المصدر تدعم C++ وJava وC#

    2. تتيح تخصيص تنسيق السجلات بالكامل عبر master_style

    3. تدعم ألوان مختلفة لكل مستوى تسجيل (ERROR, WARNING, INFO, DEBUG)

    4. تضمين الطابع الزمني، اسم الملف، رقم السطر، thread ID

    5. README غير واضح، الخطوات تقريبية

    6. عدد النجوم 0 (مشروع جديد)

    7. مناسبة للمشاريع الصغيرة والتعليمية، غير موصى بها للإنتاج

    8. بدائل: spdlog (C++), Log4j (Java), NLog (C#)

    FAQ

    أسئلة شائعة

    إجابات مباشرة على ما يبحث عنه الزائر

    هل Light-Weight Logger يدعم اللغات الأخرى غير C++ وJava وC#؟

    حسب README، لا يدعم حالياً. لكن يمكنك المساهمة في إضافة دعم لغات أخرى.

    كيف يمكن تخصيص ألوان السجلات؟

    استخدم الدالة add_format مع قيمة Colour المناسبة (مثل Colour::RED, Colour::BLUE).

    هل المكتبة مناسبة للمشاريع الإنتاجية الكبيرة؟

    لا، لأنها جديدة وغير مختبرة بشكل كافٍ. استخدمها في المشاريع الصغيرة أو التجريبية.

    ما الفرق بين Light-Weight Logger وLog4j؟

    Light-Weight Logger أخف وزناً وأبسط، لكن Log4j يوفر ميزات أكثر (تصفية، إخراج متعدد، إلخ).

    هل يمكن استخدام المكتبة مع أنظمة التشغيل Linux وWindows وmacOS؟

    من المتوقع، لكن غير مؤكد. جربها على نظامك.

    كيف يمكن المساهمة في تطوير المكتبة؟

    يمكنك فتح issue أو pull request على GitHub.

    هل يوجد توثيق عربي للمكتبة؟

    لا، هذا المقال هو أول دليل عربي.

    ما هي رخصة المكتبة؟

    غير محددة في README. افترض أنها مفتوحة المصدر.

    ABC

    مصطلحات سريعة

    تعريفات مختصرة تمنع الالتباس

    master_style

    سلسلة نصية تحدد تنسيق السجل بالكامل، تحتوي على عناصر مثل %N (اسم المستوى) و%D (التاريخ) و%M (الرسالة).

    add_format

    دالة لربط مستوى تسجيل معين (مثل ERROR) بتنسيق master_style ولون محدد.

    Colour

    فئة أو تعداد يحدد ألوان ANSI للسجلات (مثل RED, BLUE, GREY).

    Q+

    أسئلة مرتبطة يبحث عنها الناس

    استخدمها كمسارات متابعة داخل نفس الموضوع

    مكتبة تسجيل خفيفة C++تخصيص تنسيق السجلات C++أفضل مكتبة logging للغة C#مقارنة spdlog vs Light-Weight Loggerتسجيل الألوان في الطرفية C++مكتبة تسجيل مفتوحة المصدر صغيرة الحجم

    لماذا هذا المرجع يتجاوز الموضوع نفسه؟

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

    • تحسين أداء التطبيقات باستخدام مكتبات خفيفة
    • أهمية التسجيل في debugging
    • مشاريع GitHub المفيدة للمطورين العرب
    SAVE

    كيف تستخدم هذا المرجع لاحقاً؟

    القيمة الحقيقية تظهر عند العودة والتطبيق

    لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.

    Light-Weight Logger مشروع واعد لمطوري C++ وJava وC# الذين يريدون تحكماً دقيقاً في تنسيق السجلات دون تضخيم المشروع. جربه في مشروعك الصغير القادم، وساهم في تحسينه إذا أعجبك. تذكر أن تشارك تجربتك مع المجتمع العربي.

    UPD

    خطة تحديث هذا الدليل

    حتى يبقى المرجع صالحاً مع الوقت

    • تحقق من تحديثات المستودع على GitHub كل شهر
    • تحديث الخطوات التقريبية إذا تحسن README
    • إضافة أمثلة للغات Java وC# إذا توفرت
    • مراجعة التقييم بعد 6 أشهر من تاريخ النشر

    زارو — مكتبة الأدلة العملية

    نحو مكتبة أدلة عملية: تشخيص، تنفيذ، قياس، وتحديث مستمر.

    Evergreen Reference + GitHub Intelligence + Multi-Stage AI OS v8.0.0-EVERGREEN-GITHUB-AI-INTELLIGENCE-OS

    [Object]
    كاتب في Ficus Web | تقرير إخباري وقصة قصيرة

    مقالات ذات صلة

    اقتراحات مبنية على أول تصنيف مرتبط بالمقال الحالي

    التعليقات (0)

    لا توجد تعليقات بعد. كن أول من يبدأ النقاش 👇