Light-Weight Logger: دليل عملي لمكتبة تسجيل مخصصة بلغات C++ وJava وC#
Show HN: C++, Java and C# light-weight-logger
خريطة الصفحة
اختر القسم الذي تحتاجه الآن
- ما هو Light-Weight Logger؟
- لمن هذه المكتبة؟ (ومن لا يحتاجها)
- المتطلبات الأساسية قبل البدء
- طريقة التركيب (تقريبية بناءً على هيكل المشروع)
- شرح التنسيق المخصص (Master Format) والألوان
- أمثلة عملية
- الأخطاء الشائعة وكيفية حلها
- استخدامات عملية في السوق السعودي/الخليجي
- هل يستحق Light-Weight Logger التجربة؟
- بدائل مشابهة
- الأسئلة الشائعة (FAQ)
- خاتمة
قبل أن تطبق
الفكرة التي تمنع التسرع
تعتقد أن مكتبات التسجيل الثقيلة مثل log4j هي الخيار الوحيد؟ هناك حل أخف وأكثر تخصيصاً ظهر حديثاً على Hacker News.
أسئلة التشخيص السريع
قبل أن تطبق، اعرف أين تقف بالضبط
- هل تحتاج إلى تسجيل مخصص بألوان في مشروع C++ أو Java أو C#؟
- هل مشروعك صغير أو متوسط ولا يتطلب تسجيلاً في ملفات؟
- هل تفضل مكتبة خفيفة بدلاً من log4j أو NLog؟
- هل تستخدم طرفية تدعم ألوان ANSI (مثل Windows Terminal)؟
- هل أنت مستعد لاستنساخ مستودع Git وإضافة الملفات يدوياً؟
- هل تريد تعلم كيفية عمل أنظمة التسجيل من الداخل؟
- هل تحتاج إلى دعم لغات أخرى غير C++ وJava وC#؟
نظام التشغيل: Input → Process → Output
لوحة قياس النجاح
لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه
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 المشروع غير واضح تماماً، لذا الخطوات التالية تقريبية بناءً على هيكل المستودع. يُنصح بمراجعة الملفات الفعلية بعد الاستنساخ.
- استنساخ المستودع:
git clone https://github.com/PenguineDavid/light-weight-logger.git - انتقل إلى مجلد اللغة المناسبة:
cd light-weight-logger/cpp(أوjavaأوcsharp). - أضف ملفات المصدر (مثل
logger.hوlogger.cpp) إلى مشروعك. - في C++: قم بتضمين
logger.hفي ملفاتك. - في Java: أضف ملفات
.javaإلى مسار الكلاس (classpath). - في C#: أضف ملفات
.csإلى مشروعك.
شرح التنسيق المخصص (Master Format) والألوان
master format هو نص يحتوي على رموز خاصة يتم استبدالها بقيم عند التسجيل. الرموز المدعومة (حسب README):
الألوان المدعومة: 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", "تم تحميل التطبيق بنجاح");
}
}الأخطاء الشائعة وكيفية حلها
استخدامات عملية في السوق السعودي/الخليجي
- تسجيل أخطاء تطبيقات الحكومة الإلكترونية (مثل أبشر) بألوان لتسهيل التصحيح.
- مراقبة أداء تطبيقات الشركات الناشئة في الرياض ودبي.
- تسجيل عمليات المستخدمين في أنظمة نقاط البيع (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.
Playbook التطبيق
خطوات عملية مرتبة من التشخيص إلى النتيجة
استنساخ المستودع
لماذا؟ للحصول على ملفات المصدر
كيف؟ git clone https://github.com/PenguineDavid/light-weight-logger.git
الناتج: مجلد light-weight-logger يحتوي على أكواد C++ وJava وC#
إضافة الملفات إلى مشروعك
لماذا؟ لتضمين المكتبة في مشروعك
كيف؟ انسخ ملفات logger.h وlogger.cpp (C++) أو .java (Java) أو .cs (C#) إلى مسار مشروعك، وأضفها إلى مسار التضمين.
الناتج: المشروع قادر على استخدام دوال المكتبة
تعريف master format
لماذا؟ لتحديد تنسيق السجلات
كيف؟ أنشئ نصاً يحتوي على رموز مثل %C[%N]%c%S%G[%D %T %Z]%c %M %G(%F:%t:%L)
الناتج: تنسيق رئيسي جاهز للاستخدام
إضافة مستوى تسجيل بلون
لماذا؟ لتخصيص لون كل مستوى
كيف؟ استخدم add_format("ERROR", master, Colour::RED) في C++، أو addFormat("WARNING", master, Colour.YELLOW) في Java، أو AddFormat("INFO", master, Colour.GREEN) في C#
الناتج: مستوى تسجيل بلون محدد
تسجيل رسالة
لماذا؟ لإخراج السجل
كيف؟ استخدم logger.log("ERROR", "فشل الاتصال")
الناتج: سطر ملون يظهر في الطرفية
قوالب جاهزة للنسخ
حوّل القراءة إلى تنفيذ سريع
#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;
}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", "انتهاء صلاحية الجلسة");
}
}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", "تم تحميل التطبيق بنجاح");
}
}مصفوفة الأخطاء
اعرف أين يتعثر الناس وكيف تتجنب ذلك
شجرة القرار
ماذا تفعل حسب حالتك؟
إذا: إذا كنت تحتاج تسجيلاً في ملفات
إذن: استخدم spdlog (C++) أو NLog (C#) أو log4j (Java)
إذا: إذا كنت تحتاج ميزات متقدمة (غير متزامن، ضغط)
إذن: استخدم مكتبة أثقل مثل log4j أو NLog
إذا: إذا كنت تستخدم لغة أخرى غير C++/Java/C#
إذن: ابحث عن بدائل مثل Python logging أو Winston (Node.js)
إذا: إذا كنت تريد حلاً خفيفاً وسريعاً بألوان
إذن: استخدم Light-Weight Logger
خطة تطبيق 7 أيام
جدول صغير يمنع التسويف
- اليوم 1: استنساخ المستودع وقراءة README
- اليوم 2: تجربة مثال C++ وتشغيله
- اليوم 3: تجربة مثال Java وتشغيله
- اليوم 4: تجربة مثال C# وتشغيله
- اليوم 5: تخصيص master format وإضافة مستويات جديدة
- اليوم 6: اختبار الأخطاء الشائعة وحلها
- اليوم 7: دمج المكتبة في مشروع حقيقي
حقائق سريعة تحفظها
نقاط مختصرة ترجع لها لاحقاً
1. المكتبة مفتوحة المصدر على GitHub
2. تدعم C++ وJava وC# فقط
3. لا تدعم التسجيل في ملفات
4. تستخدم رموزاً خاصة في master format
5. الألوان محدودة بـ 8 ألوان أساسية
6. تحتاج طرفية تدعم ANSI
7. مناسبة للمشاريع الصغيرة والمتوسطة
8. الترخيص غير محدد في README
أسئلة شائعة
إجابات مباشرة على ما يبحث عنه الزائر
مصطلحات سريعة
تعريفات مختصرة تمنع الالتباس
نص يحتوي على رموز تحدد تنسيق السجل، مثل %N لاسم المستوى و%D للتاريخ.
أكواد لونية تستخدم في الطرفيات لتلوين النص.
مستوى التسجيل مثل ERROR أو WARNING أو INFO.
أسئلة مرتبطة يبحث عنها الناس
استخدمها كمسارات متابعة داخل نفس الموضوع
لماذا هذا المرجع يتجاوز الموضوع نفسه؟
تحول القارئ: من مطور يستخدم مكتبات تسجيل ثقيلة ومعقدة إلى مطور قادر على إنشاء نظام تسجيل مخصص خفيف بألوان.
- أنظمة التسجيل في تطبيقات الويب
- إدارة الأخطاء في DevOps
- تنسيق المخرجات في CLI
كيف تستخدم هذا المرجع لاحقاً؟
القيمة الحقيقية تظهر عند العودة والتطبيق
لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.
Light-Weight Logger ليس بديلاً كاملاً عن المكتبات الكبيرة، لكنه خيار ممتاز للمشاريع الصغيرة والمتوسطة التي تريد تسجيلاً مخصصاً بألوان دون تعقيد. جربه، وإذا أعجبك، ساهم في تطويره على GitHub.
خطة تحديث هذا الدليل
حتى يبقى المرجع صالحاً مع الوقت
- تحقق من تحديثات المستودع على GitHub شهرياً
- تابع إصدارات جديدة تدعم لغات إضافية
- راجع README لأي تغييرات في الرموز أو الألوان

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