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

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

    قبل أن تطبق

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

    تعتقد أن مكتبات التسجيل إما معقدة (مثل log4j) أو بدائية (مثل printf)؟ هناك خيار ثالث: مكتبة خفيفة تمنحك تحكمًا كاملاً بالتنسيق والألوان.

    Q

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

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

    1. هل تحتاج إلى تسجيل في ملفات أم فقط في الطرفية؟
    2. هل مشروعك بلغة C++ أو Java أو C#؟
    3. هل تفضل مكتبة خفيفة لا تؤثر على الأداء؟
    4. هل تريد تخصيص ألوان لكل جزء من السجل؟
    5. هل مشروعك في مرحلة النموذج الأولي أم الإنتاج؟
    6. هل تستخدم نظام تشغيل يدعم ألوان ANSI في الطرفية؟
    7. هل لديك خبرة في التعامل مع مكتبات مفتوحة المصدر غير موثقة جيداً؟

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

    INPUT
    رسالة نصية + اسم التنسيق (مثل ERROR, INFO, WARN)
    PROCESS
    يتم تطبيق master_style على الرسالة مع استبدال العناصر النائبة (%C, %N, %D, %T, %Z, %M, %F, %t, %L) بالقيم الفعلية، وتلوين الأجزاء حسب الألوان المحددة لكل تنسيق.
    OUTPUT
    سطر نصي ملون في الطرفية بالتنسيق المطلوب.
    Decision Layer
    اختيار التنسيق المناسب حسب نوع الرسالة (خطأ، معلومات، تحذير).
    Memory Layer
    تخزين التنسيقات المضافة في ذاكرة المكتبة لاستخدامها لاحقًا.
    Feedback Loop
    يمكن تعديل master_style أو إضافة تنسيقات جديدة ديناميكيًا أثناء التشغيل.
    M

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

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

    المؤشرطريقة القياسإشارة جيدة
    وقت التجميعقياس الوقت من بدء التجميع حتى الانتهاءأقل من 5 ثوانٍ
    حجم الملف التنفيذياستخدام ls -lh أو خصائص الملفأقل من 1 ميغابايت
    عدد الأسطر البرمجية للتخصيصعد الأسطر اللازمة لإضافة تنسيق جديدأقل من 10 أسطر

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

    ما هو Light-Weight Logger؟

    مكتبة تسجيل خفيفة الوزن (Light-Weight Logger) تتيح للمطورين تعريف تنسيق رئيسي للسجلات (master style) ثم إنشاء تنسيقات مسماة (مثل ERROR, INFO, WARN) بألوان مختلفة. تدعم المكتبة حاليًا ثلاث لغات: C++ وJava وC#. الفكرة الأساسية: بدلاً من استخدام printf أو cout مع تنسيق ثابت، يمكنك تخصيص كل جزء من السجل (الوقت، الملف، رقم السطر، الرسالة) بلون منفصل.

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

    إعلان

    من يحتاجها: مطور يعمل على مشروع صغير أو متوسط بلغة C++ أو Java أو C#، ويريد تحسين قراءة السجلات دون تعقيد المكتبات الثقيلة. من لا يحتاجها: من يحتاج تسجيلاً في ملفات (حاليًا لا تدعمه)، أو من يعمل بلغات أخرى (Python, JavaScript)، أو من يريد مكتبة مستقرة للإنتاج (المشروع جديد ولم يختبر بشكل واسع).

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

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

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

    • مترجم C++ (مثل g++ أو Visual Studio) أو Java JDK أو .NET SDK.
    • معرفة أساسية باللغة المستخدمة.
    • لا توجد مكتبات خارجية إضافية.

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

    لأن README غير واضح، هذه الخطوات مبنية على هيكل المستودع:

    1. استنساخ المستودع: git clone https://github.com/PenguineDavid/light-weight-logger.git
    2. الدخول إلى المجلد: cd light-weight-logger
    3. اختيار مجلد اللغة المناسبة (C++، Java، C#).
    4. تجميع الكود: في C++ استخدم g++ -std=c++11 -o logger main.cpp (أو ملف الرأس المناسب). في Java: javac *.java. في C#: dotnet build أو csc *.cs.
    5. تشغيل المثال: ./logger (أو java Main أو dotnet run).

    شرح الإعدادات (لا يوجد .env)

    المشروع لا يستخدم ملف .env. الإعدادات تتم عبر الكود مباشرة: تعريف master_style كنص، ثم إضافة تنسيقات باستخدام add_format.

    التشغيل والتجربة الأولى

    إليك مثال عملي بلغة C++:

    #include "logger.h"
    int main() {
        Logger logger;
        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.log("ERROR", "هذا سجل خطأ تجريبي");
        return 0;
    }

    في Java:

    Logger logger = new Logger();
    String masterStyle = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";
    logger.addFormat("ERROR", masterStyle, Colour.RED);
    logger.log("ERROR", "هذا سجل خطأ تجريبي");

    في C#:

    Logger logger = new Logger();
    string masterStyle = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";
    logger.AddFormat("ERROR", masterStyle, Colour.RED);
    logger.Log("ERROR", "هذا سجل خطأ تجريبي");

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

    الخطأالسببالحل
    الشفرة لا تترجمربما اسم الملف أو المسار خطأتأكد من وجود ملف الرأس (header) في نفس المجلد
    ألوان لا تظهرالطرفية لا تدعم ANSIاستخدم طرفية تدعم الألوان (مثل Windows Terminal)
    تنسيق غير صحيحخطأ في master_styleتأكد من استخدام العناصر النائبة الصحيحة (%C, %N, %D, %T, %Z, %M, %F, %t, %L)

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

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

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

    المكتبة واعدة لمشاريع التطوير السريع والنماذج الأولية. لكنها ليست جاهزة للإنتاج بعد (قلة الاختبارات، عدم دعم التسجيل في ملف). جربها في مشروع جانبي أولاً.

    بدائل مشابهة

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

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

    هل Light-Weight Logger يدعم العربية في السجلات؟

    نعم، يدعم Unicode، لذا يمكنك كتابة رسائل عربية.

    ما الفرق بين هذه المكتبة و spdlog؟

    Light-Weight Logger أخف وزناً وأبسط، لكن spdlog أكثر استقراراً وميزات (تسجيل في ملف، تناوب السجلات).

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

    حالياً لا يُنصح بذلك لحداثتها وقلة اختباراتها.

    كيف أضيف تنسيقاً جديداً؟

    استخدم add_format مع اسم التنسيق وmaster_style واللون.

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

    لا، حالياً تدعم الطرفية فقط.

    ما هي اللغات المدعومة بالضبط؟

    C++ وJava وC#.

    هل المكتبة مستقرة؟

    لا، هي في مرحلة مبكرة (0 نجوم على GitHub وقت كتابة المقال).

    كيف أساهم في المشروع؟

    يمكنك فتح Issue أو Pull Request على GitHub.

    خاتمة

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

    DO

    Playbook التطبيق

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

    خطوة 1

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

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

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

    الناتج: مجلد light-weight-logger على جهازك

    خطوة 2

    اختيار مجلد اللغة

    لماذا؟ المكتبة تدعم ثلاث لغات ولكل مجلد منفصل

    كيف؟ cd light-weight-logger ثم cd C++ أو Java أو C#

    الناتج: الوصول إلى ملفات اللغة المختارة

    خطوة 3

    تجميع الكود

    لماذا؟ لتحويل الكود المصدري إلى ملف تنفيذي

    كيف؟ في C++: g++ -std=c++11 -o logger main.cpp في Java: javac *.java في C#: dotnet build

    الناتج: ملف تنفيذي (logger.exe أو Main.class أو dll)

    خطوة 4

    تشغيل المثال

    لماذا؟ للتأكد من أن التثبيت يعمل

    كيف؟ ./logger أو java Main أو dotnet run

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

    خطوة 5

    تخصيص التنسيق

    لماذا؟ لتعديل الألوان والعناصر حسب احتياجك

    كيف؟ تعديل master_style وإضافة تنسيقات باستخدام add_format

    الناتج: سجلات مخصصة بألوان مختلفة لكل مستوى

    TMP

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

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

    قالب C++ أساسي
    #include "logger.h"
    int main() {
        Logger logger;
        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.log("ERROR", "رسالة خطأ");
        return 0;
    }
    قالب Java أساسي
    Logger logger = new Logger();
    String masterStyle = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";
    logger.addFormat("ERROR", masterStyle, Colour.RED);
    logger.log("ERROR", "رسالة خطأ");
    قالب C# أساسي
    Logger logger = new Logger();
    string masterStyle = "%C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)";
    logger.AddFormat("ERROR", masterStyle, Colour.RED);
    logger.Log("ERROR", "رسالة خطأ");
    ERR

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

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

    الخطألماذا يحدث؟التصحيح
    الشفرة لا تترجمربما اسم الملف أو المسار خطأتأكد من وجود ملف الرأس (header) في نفس المجلد
    ألوان لا تظهرالطرفية لا تدعم ANSIاستخدم طرفية تدعم الألوان (مثل Windows Terminal)
    تنسيق غير صحيحخطأ في master_styleتأكد من استخدام العناصر النائبة الصحيحة (%C, %N, %D, %T, %Z, %M, %F, %t, %L)
    IF

    شجرة القرار

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

    إذا: إذا كنت تستخدم C++

    إذن: اذهب إلى مجلد C++ واتبع خطوات التجميع

    إذا: إذا كنت تستخدم Java

    إذن: اذهب إلى مجلد Java واستخدم javac

    إذا: إذا كنت تستخدم C#

    إذن: اذهب إلى مجلد C# واستخدم dotnet build

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

    إذن: ابحث عن بديل مثل spdlog أو NLog

    7D

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

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

    1. اليوم 1: استنساخ المستودع وتجميع المثال
    2. اليوم 2: تخصيص master_style وإضافة تنسيقين
    3. اليوم 3: دمج المكتبة في مشروع صغير
    4. اليوم 4: اختبار الألوان في طرفيات مختلفة
    5. اليوم 5: كتابة توثيق بسيط للاستخدام
    6. اليوم 6: مشاركة التجربة مع زميل
    7. اليوم 7: تقييم ما إذا كانت المكتبة مناسبة لمشروعك
    FACT

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

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

    1. المكتبة تدعم C++ وJava وC# فقط.

    2. لا تدعم التسجيل في ملفات حالياً.

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

    4. المشروع جديد وليس له نجوم على GitHub.

    5. الإعدادات تتم عبر الكود وليس ملف .env.

    6. يمكن تخصيص لون كل جزء من السجل (وقت، ملف، رسالة).

    7. تدعم Unicode لذا يمكن استخدام العربية.

    8. خفيفة الوزن ولا تتطلب مكتبات خارجية.

    9. مناسبة للنماذج الأولية والمشاريع الصغيرة.

    FAQ

    أسئلة شائعة

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

    هل Light-Weight Logger يدعم العربية في السجلات؟

    نعم، يدعم Unicode، لذا يمكنك كتابة رسائل عربية.

    ما الفرق بين هذه المكتبة و spdlog؟

    Light-Weight Logger أخف وزناً وأبسط، لكن spdlog أكثر استقراراً وميزات (تسجيل في ملف، تناوب السجلات).

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

    حالياً لا يُنصح بذلك لحداثتها وقلة اختباراتها.

    كيف أضيف تنسيقاً جديداً؟

    استخدم add_format مع اسم التنسيق وmaster_style واللون.

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

    لا، حالياً تدعم الطرفية فقط.

    ما هي اللغات المدعومة بالضبط؟

    C++ وJava وC#.

    هل المكتبة مستقرة؟

    لا، هي في مرحلة مبكرة (0 نجوم على GitHub وقت كتابة المقال).

    كيف أساهم في المشروع؟

    يمكنك فتح Issue أو Pull Request على GitHub.

    ABC

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

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

    master_style

    نص يحدد تنسيق السجل الرئيسي باستخدام عناصر نائبة مثل %C للون و%N للاسم.

    add_format

    دالة لإضافة تنسيق مسمى (مثل ERROR) بلون معين.

    Colour

    فئة أو تعداد لتحديد الألوان (RED, GREEN, YELLOW, إلخ).

    Q+

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

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

    مكتبة تسجيل خفيفة C++تسجيل ملون في Javaتخصيص ألوان السجلات C#بديل spdlog خفيفمكتبة تسجيل مفتوحة المصدر صغيرةتسجيل الأخطاء بألوان في الطرفية

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

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

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

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

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

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

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

    UPD

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

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

    • تحقق من تحديثات المستودع كل شهر.
    • أضف أمثلة جديدة إذا تغيرت واجهة API.
    • راجع حالة النجوم والـ Issues لتقييم الاستقرار.

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

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

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

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

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

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

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

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