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

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 format. مناسبة للمشاريع الصغيرة والمتوسطة، لكنها لا تدعم التسجيل في ملفات.
    Light-Weight Logger880 كلمة تقريباًزارو — مكتبة الأدلة العملية
    Light-Weight Logger: دليل عملي لمكتبة تسجيل مخصصة بلغات C++ وJava وC#
    Photo by Photo Collections 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. شرح التنسيق المخصص (Master Format) والألوان
    6. أمثلة عملية
    7. الأخطاء الشائعة وكيفية حلها
    8. استخدامات عملية في السوق السعودي/الخليجي
    9. هل يستحق Light-Weight Logger التجربة؟
    10. بدائل مشابهة
    11. الأسئلة الشائعة (FAQ)
    12. خاتمة
    !

    قبل أن تطبق

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

    تعتقد أن مكتبات التسجيل الثقيلة مثل log4j هي الخيار الوحيد؟ هناك حل أخف وأكثر تخصيصاً ظهر حديثاً على Hacker News.

    Q

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

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

    1. هل تحتاج إلى تسجيل مخصص بألوان في مشروع C++ أو Java أو C#؟
    2. هل مشروعك صغير أو متوسط ولا يتطلب تسجيلاً في ملفات؟
    3. هل تفضل مكتبة خفيفة بدلاً من log4j أو NLog؟
    4. هل تستخدم طرفية تدعم ألوان ANSI (مثل Windows Terminal)؟
    5. هل أنت مستعد لاستنساخ مستودع Git وإضافة الملفات يدوياً؟
    6. هل تريد تعلم كيفية عمل أنظمة التسجيل من الداخل؟
    7. هل تحتاج إلى دعم لغات أخرى غير C++ وJava وC#؟

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

    INPUT
    رسالة نصية (log message) ومستوى التسجيل (مثل ERROR) ومعلمات التنسيق (master format).
    PROCESS
    المكتبة تحلل master format وتستبدل الرموز بالقيم الفعلية (التاريخ، الوقت، اسم المستوى، إلخ) وتطبق اللون المحدد للمستوى.
    OUTPUT
    سطر نصي ملون في الطرفية (console) بالتنسيق المطلوب.
    Decision Layer
    اختيار master format المناسب وتحديد الألوان لكل مستوى.
    Memory Layer
    تخزين master format ومستويات التسجيل في كائن Logger.
    Feedback Loop
    تعديل master format أو الألوان بناءً على ملاحظات المطور.
    M

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

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

    المؤشرطريقة القياسإشارة جيدة
    وقت التثبيتالوقت من استنساخ المستودع إلى أول سجل ناجحأقل من 10 دقائق
    عدد أسطر الكود المطلوبةعدد أسطر الكود لتهيئة واستخدام المكتبةأقل من 20 سطراً
    وضوح السجلاتهل يمكن تمييز المستويات بسهولة؟ألوان مختلفة لكل مستوى

    Light-Weight Logger هي مكتبة تسجيل (logging) مفتوحة المصدر ظهرت مؤخراً على Hacker News، وتتيح لك إنشاء سجلات مخصصة بألوان وتنسيقات احترافية في مشاريع C++ وJava وC#. الفكرة بسيطة: تعرّف تنسيقاً رئيسياً (master format) يحتوي على رموز تمثل العناصر (مثل التاريخ، الوقت، اسم المستوى، الملف، السطر)، ثم تضيف مستويات تسجيل (مثل ERROR، WARNING، INFO) مع ألوان مختلفة. النتيجة: سجلات مقروءة وجميلة بدون تعقيد المكتبات الثقيلة.

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

    ما هو Light-Weight Logger؟

    هي مكتبة تسجيل خفيفة تتيح لك تخصيص تنسيق السجلات بشكل كامل باستخدام رموز بسيطة. تدعم حالياً C++ وJava وC#. الميزة الرئيسية: يمكنك تعريف تنسيق رئيسي (master format) مثل:

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

    ثم إضافة مستويات بألوان:

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

    النتيجة: سطر أحمر يبدأ بـ [ERROR] ثم التاريخ والوقت والمنطقة الزمنية، ثم الرسالة، وأخيراً الملف ورقم السطر.

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

    إعلان

    من يحتاجها:

    • مطور C++ أو Java أو C# يريد تحسين سجلاته دون إضافة مكتبات ثقيلة.
    • مشاريع صغيرة ومتوسطة تحتاج تسجيلاً مخصصاً بألوان.
    • من يريد تعلم كيفية عمل أنظمة التسجيل من الداخل.

    من لا يحتاجها:

    • من يحتاج تسجيلاً في ملفات (file logging) – المكتبة حالياً تدعم الطرفية فقط.
    • من يحتاج ميزات متقدمة مثل التسجيل غير المتزامن أو الضغط.
    • من يعمل بلغات أخرى (Python, JavaScript) – المكتبة لا تدعمها حالياً.

    المتطلبات الأساسية قبل البدء

    • مترجم C++ يدعم C++11 على الأقل (مثل GCC 4.8+، Clang 3.3+، MSVC 2015+).
    • بيئة Java مع JDK 8+.
    • بيئة .NET مع C# 6+ (Visual Studio 2015+ أو .NET Core 2.0+).
    • أداة Git لاستنساخ المستودع.

    طريقة التركيب (تقريبية بناءً على هيكل المشروع)

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

    1. استنساخ المستودع: git clone https://github.com/PenguineDavid/light-weight-logger.git
    2. انتقل إلى مجلد اللغة المناسبة: cd light-weight-logger/cpp (أو java أو csharp).
    3. أضف ملفات المصدر (مثل logger.h و logger.cpp) إلى مشروعك.
    4. في C++: قم بتضمين logger.h في ملفاتك.
    5. في Java: أضف ملفات .java إلى مسار الكلاس (classpath).
    6. في C#: أضف ملفات .cs إلى مشروعك.

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

    master format هو نص يحتوي على رموز خاصة يتم استبدالها بقيم عند التسجيل. الرموز المدعومة (حسب README):

    الرمزالمعنى
    %Cبداية اللون (colour start)
    %cنهاية اللون (colour end)
    %Nاسم المستوى (مثل ERROR)
    %Sفاصل (separator)
    %Gتطبيق اللون العام (global colour)
    %Dالتاريخ (date)
    %Tالوقت (time)
    %Zالمنطقة الزمنية (time zone)
    %Mالرسالة الرئيسية (main log message)
    %Fاسم الملف (file name)
    %tمعرّف الخيط (thread ID)
    %Lرقم السطر (line number)

    الألوان المدعومة: RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, GREY, DEFAULT.

    أمثلة عملية

    مثال C++: تسجيل خطأ باللون الأحمر

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

    مثال Java: تسجيل تحذير باللون الأصفر

    import logger.*;
    
    public class Main {
        public static void main(String[] args) {
            Logger logger = new Logger();
            String master = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";
            logger.addFormat("WARNING", master, Colour.YELLOW);
            logger.log("WARNING", "انتهاء صلاحية الجلسة");
        }
    }

    مثال C#: تسجيل معلومات باللون الأخضر

    using Logger;
    
    class Program {
        static void Main() {
            Logger logger = new Logger();
            string master = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";
            logger.AddFormat("INFO", master, Colour.GREEN);
            logger.Log("INFO", "تم تحميل التطبيق بنجاح");
        }
    }

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

    الخطأالسببالحل
    خطأ في تعريف master formatاستخدام رموز غير مدعومةاستخدم الرموز المذكورة أعلاه فقط
    عدم ظهور الألوانالطرفية لا تدعم ANSI coloursاستخدم طرفية تدعم الألوان (مثل Windows Terminal)
    خطأ في الترجمة (C++)نسخة C++ قديمةتأكد من استخدام C++11 أو أحدث
    تعذر العثور على الملفاتمسار الملفات غير صحيحأضف المسار الصحيح إلى include path

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

    • تسجيل أخطاء تطبيقات الحكومة الإلكترونية (مثل أبشر) بألوان لتسهيل التصحيح.
    • مراقبة أداء تطبيقات الشركات الناشئة في الرياض ودبي.
    • تسجيل عمليات المستخدمين في أنظمة نقاط البيع (POS) في المتاجر.

    هل يستحق Light-Weight Logger التجربة؟

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

    بدائل مشابهة

    • log4j (Java): ثقيل لكنه يدعم ملفات وقواعد بيانات.
    • spdlog (C++): خفيف وسريع، يدعم التسجيل في ملف.
    • NLog (C#): مرن ويدعم أهداف متعددة.

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

    هل تدعم المكتبة التسجيل في ملف بدلاً من الطرفية؟

    حسب README، لا تدعم حالياً. يمكنك إعادة توجيه مخرجات الطرفية إلى ملف باستخدام >>.

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

    log4j أثقل وأكثر ميزات، بينما هذا المشروع يركز على البساطة والتخصيص البصري.

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

    الترخيص غير محدد في README، لذا يُنصح بالتواصل مع المؤلف.

    كيف أضيف ألواناً مخصصة غير المدعومة؟

    حالياً الألوان محدودة. يمكنك تعديل المصدر لإضافة ألوان ANSI أخرى.

    هل تعمل المكتبة على نظام Windows؟

    نعم، بشرط استخدام طرفية تدعم ANSI (مثل Windows Terminal).

    ماذا أفعل إذا واجهت خطأ في التركيب؟

    تأكد من استيفاء المتطلبات، وراجع هيكل المشروع بعد الاستنساخ.

    هل هناك خطط لدعم لغات أخرى مثل Python؟

    غير مذكور في README.

    خاتمة

    Light-Weight Logger مكتبة واعدة لمن يريد تحكم كامل في تنسيق السجلات بألوان. جربها في مشروعك الصغير، وإذا أعجبتك، ساهم في تطويرها على GitHub.

    DO

    Playbook التطبيق

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

    خطوة 1

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

    لماذا؟ للحصول على ملفات المصدر

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

    الناتج: مجلد light-weight-logger يحتوي على أكواد C++ وJava وC#

    خطوة 2

    إضافة الملفات إلى مشروعك

    لماذا؟ لتضمين المكتبة في مشروعك

    كيف؟ انسخ ملفات logger.h وlogger.cpp (C++) أو .java (Java) أو .cs (C#) إلى مسار مشروعك، وأضفها إلى مسار التضمين.

    الناتج: المشروع قادر على استخدام دوال المكتبة

    خطوة 3

    تعريف master format

    لماذا؟ لتحديد تنسيق السجلات

    كيف؟ أنشئ نصاً يحتوي على رموز مثل %C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)

    الناتج: تنسيق رئيسي جاهز للاستخدام

    خطوة 4

    إضافة مستوى تسجيل بلون

    لماذا؟ لتخصيص لون كل مستوى

    كيف؟ استخدم add_format("ERROR", master, Colour::RED) في C++، أو addFormat("WARNING", master, Colour.YELLOW) في Java، أو AddFormat("INFO", master, Colour.GREEN) في C#

    الناتج: مستوى تسجيل بلون محدد

    خطوة 5

    تسجيل رسالة

    لماذا؟ لإخراج السجل

    كيف؟ استخدم logger.log("ERROR", "فشل الاتصال")

    الناتج: سطر ملون يظهر في الطرفية

    TMP

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

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

    C++ basic template
    #include "logger.h"
    int main() {
        Logger logger;
        std::string master = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";
        logger.add_format("ERROR", master, Colour::RED);
        logger.log("ERROR", "فشل الاتصال بقاعدة البيانات");
        return 0;
    }
    Java basic template
    import logger.*;
    public class Main {
        public static void main(String[] args) {
            Logger logger = new Logger();
            String master = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";
            logger.addFormat("WARNING", master, Colour.YELLOW);
            logger.log("WARNING", "انتهاء صلاحية الجلسة");
        }
    }
    C# basic template
    using Logger;
    class Program {
        static void Main() {
            Logger logger = new Logger();
            string master = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";
            logger.AddFormat("INFO", master, Colour.GREEN);
            logger.Log("INFO", "تم تحميل التطبيق بنجاح");
        }
    }
    ERR

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

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

    الخطألماذا يحدث؟التصحيح
    خطأ في تعريف master formatاستخدام رموز غير مدعومةاستخدم الرموز المذكورة في المقال فقط
    عدم ظهور الألوانالطرفية لا تدعم ANSI coloursاستخدم طرفية تدعم الألوان مثل Windows Terminal
    خطأ في الترجمة (C++)نسخة C++ قديمةتأكد من استخدام C++11 أو أحدث
    تعذر العثور على الملفاتمسار الملفات غير صحيحأضف المسار الصحيح إلى include path
    IF

    شجرة القرار

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

    إذا: إذا كنت تحتاج تسجيلاً في ملفات

    إذن: استخدم spdlog (C++) أو NLog (C#) أو log4j (Java)

    إذا: إذا كنت تحتاج ميزات متقدمة (غير متزامن، ضغط)

    إذن: استخدم مكتبة أثقل مثل log4j أو NLog

    إذا: إذا كنت تستخدم لغة أخرى غير C++/Java/C#

    إذن: ابحث عن بدائل مثل Python logging أو Winston (Node.js)

    إذا: إذا كنت تريد حلاً خفيفاً وسريعاً بألوان

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

    7D

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

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

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

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

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

    1. المكتبة مفتوحة المصدر على GitHub

    2. تدعم C++ وJava وC# فقط

    3. لا تدعم التسجيل في ملفات

    4. تستخدم رموزاً خاصة في master format

    5. الألوان محدودة بـ 8 ألوان أساسية

    6. تحتاج طرفية تدعم ANSI

    7. مناسبة للمشاريع الصغيرة والمتوسطة

    8. الترخيص غير محدد في README

    FAQ

    أسئلة شائعة

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

    هل تدعم المكتبة التسجيل في ملف بدلاً من الطرفية؟

    حسب README، لا تدعم حالياً. يمكنك إعادة توجيه مخرجات الطرفية إلى ملف باستخدام >>.

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

    log4j أثقل وأكثر ميزات، بينما هذا المشروع يركز على البساطة والتخصيص البصري.

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

    الترخيص غير محدد في README، لذا يُنصح بالتواصل مع المؤلف.

    كيف أضيف ألواناً مخصصة غير المدعومة؟

    حالياً الألوان محدودة. يمكنك تعديل المصدر لإضافة ألوان ANSI أخرى.

    هل تعمل المكتبة على نظام Windows؟

    نعم، بشرط استخدام طرفية تدعم ANSI (مثل Windows Terminal).

    ماذا أفعل إذا واجهت خطأ في التركيب؟

    تأكد من استيفاء المتطلبات، وراجع هيكل المشروع بعد الاستنساخ.

    هل هناك خطط لدعم لغات أخرى مثل Python؟

    غير مذكور في README.

    ABC

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

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

    Master Format

    نص يحتوي على رموز تحدد تنسيق السجل، مثل %N لاسم المستوى و%D للتاريخ.

    ANSI Colours

    أكواد لونية تستخدم في الطرفيات لتلوين النص.

    Log Level

    مستوى التسجيل مثل ERROR أو WARNING أو INFO.

    Q+

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

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

    كيفية تثبيت Light-Weight Logger في C++أمثلة استخدام Light-Weight Logger Javaمقارنة Light-Weight Logger مع spdlogحل مشكلة عدم ظهور الألوان في Light-Weight Loggerتخصيص تنسيق السجلات في Light-Weight Logger

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

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

    • أنظمة التسجيل في تطبيقات الويب
    • إدارة الأخطاء في DevOps
    • تنسيق المخرجات في CLI
    SAVE

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

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

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

    Light-Weight Logger ليس بديلاً كاملاً عن المكتبات الكبيرة، لكنه خيار ممتاز للمشاريع الصغيرة والمتوسطة التي تريد تسجيلاً مخصصاً بألوان دون تعقيد. جربه، وإذا أعجبك، ساهم في تطويره على GitHub.

    UPD

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

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

    • تحقق من تحديثات المستودع على GitHub شهرياً
    • تابع إصدارات جديدة تدعم لغات إضافية
    • راجع README لأي تغييرات في الرموز أو الألوان

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

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

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

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

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

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

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

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