lazygophers/log

Go Version Test Coverage Go Report Card License: MIT

مكتبة تسجيل Go عالية الأداء والمرنة، مبنية على zap، توفر ميزات غنية وواجهة برمجة تطبيقات بسيطة.

📖 لغات الوثائق

✨ الميزات

  • 🚀 أداء عالي : مبنية على zap مع إعادة استخدام كائنات Entry عبر مجموعة، مما يقلل من تخصيص الذاكرة
  • 📊 مستويات تسجيل غنية : مستويات Trace، Debug، Info، Warn، Error، Fatal، Panic
  • ⚙️ تكوين مرن :
    • التحكم بمستوى التسجيل
    • تسجيل معلومات المتصل
    • معلومات التتبع (بما في ذلك معرف goroutine)
    • بادئات وخلاصات تسجيل مخصصة
    • أهداف إخراج مخصصة (الوحدة التحكم، الملفات، إلخ)
    • خيارات تنسيق التسجيل
  • 🔄 دورة الملفات : دعم لدورة الملفات التسجيلية كل ساعة
  • 🔌 توافق مع Zap : تكامل سلس مع zap WriteSyncer
  • 🎯 واجهة برمجة تطبيقات بسيطة : واجهة برمجة تطبيقات نظيفة تشبه مكتبة التسجيل القياسية، سهلة الاستخدام

🚀 بداية سريعة

التثبيت

go get github.com/lazygophers/log

الاستخدام الأساسي

package main

import (
    "github.com/lazygophers/log"
)

func main() {
    // استخدام المسجل العالمي الافتراضي
    log.Debug("رسالة تصحيح الأخطاء")
    log.Info("رسالة معلومات")
    log.Warn("رسالة تحذير")
    log.Error("رسالة خطأ")

    // استخدام الإخراج المنسق
    log.Infof("لقد سجل الدخول المستخدم %s بنجاح", "admin")

    // التكوين المخصص
    customLogger := log.New().
        SetLevel(log.InfoLevel).
        EnableCaller(false).
        SetPrefixMsg("[MyApp]")

    customLogger.Info("هذا سجل من المسجل المخصص")
}

📚 الاستخدام المتقدم

المسجل المخصص مع الإخراج إلى الملف

package main

import (
    "os"
    "github.com/lazygophers/log"
)

func main() {
    // إنشاء مسجل مع إخراج إلى الملف
    logger := log.New().
        SetLevel(log.DebugLevel).
        EnableCaller(true).
        EnableTrace(true).
        SetOutput(os.Stdout, log.GetOutputWriterHourly("/var/log/myapp.log"))

    logger.Debug("رسالة تصحيح الأخطاء مع معلومات المتصل")
    logger.Info("رسالة معلومات مع معلومات التتبع")
}

التحكم بمستوى التسجيل

package main

import "github.com/lazygophers/log"

func main() {
    logger := log.New().SetLevel(log.WarnLevel)

    // فقط سيتم تسجيل رسائل التحذير وعلى الأعلى
    logger.Debug("لا سيتم تسجيل هذا")  // تم تجاهله
    logger.Info("لا سيتم تسجيل هذا")   // تم تجاهله
    logger.Warn("سيتم تسجيل هذا")    // تم تسجيله
    logger.Error("سيتم تسجيل هذا")   // تم تسجيله
}

🔧 خيارات التكوين

تكوين المسجل

الطريقة الوصف القيمة الافتراضية
SetLevel(level) تعيين المستوى الأدنى للتسجيل DebugLevel
EnableCaller(enable) تمكين/تعطيل معلومات المتصل false
EnableTrace(enable) تمكين/تعطيل معلومات التتبع false
SetCallerDepth(depth) تعيين عمق المتصل 2
SetPrefixMsg(prefix) تعيين بادئ التسجيل ""
SetSuffixMsg(suffix) تعيين خاتم التسجيل ""
SetOutput(writers...) تعيين أهداف الإخراج os.Stdout

مستويات التسجيل

المستوى الوصف
TraceLevel الأكثر تفصيلاً، لل מע�ارفة مفصلة
DebugLevel معلومات تصحيح الأخطاء
InfoLevel معلومات عامة
WarnLevel رسائل تحذير
ErrorLevel رسائل خطأ
FatalLevel أخطاء قاتلة (تدعو os.Exit(1))
PanicLevel أخطاء منะكة (تدعو panic())

🏗️ الهندسة

المكونات الرئيسية

  • Logger : بنية تسجيل رئيسية مع مستويات، مخرجات، منسقين وعمق متصل قابلة للتكوين
  • Entry : سجل تسجيل فردي مع دعم كامل للبيانات الوصفية
  • Level : تعريفات مستويات التسجيل والوظائف المساعدة
  • Format : واجهة وتطبيقات تنسيق التسجيل

تحسينات الأداء

  • مجموعة الكائنات : إعادة استخدام كائنات Entry لتقليل تخصيص الذاكرة
  • التسجيل المشروط : تسجيل الحقول الكبيرة فقط عند الحاجة
  • فحص سريع للمستوى : فحص مستوى التسجيل في الطبقة الخارجية
  • تصميم بدون قفل : لا تحتاج معظم العمليات إلى قفل

📊 مقارنة الأداء

الخاصية lazygophers/log zap logrus تسجيل القياسي
الأداء عالي عالي متوسط منخفض
بساطة واجهة برمجة تطبيقات عالي متوسط عالي عالي
ثراء الميزات متوسط عالي عالي منخفض
المرونة متوسط عالي عالي منخفض
منحنى التعلم منخفض متوسط متوسط منخفض

🔗 الوثائق ذات الصلة

🚀 الحصول على مساعدة

📄 الرخصة

هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للمزيد من التفاصيل.

🤝 المساهمة

نرحب بالمساهمات! يرجى مراجعة دليل المساهمة لدينا للمزيد من التفاصيل.


lazygophers/log مصممة ليكون الحلول التسجيلية الافتراضية لمطورين Go الذين يقدرون كل من الأداء والبساطة. سواء كنت تبني أداة صغيرة أو نظام موزع على نطاق واسع، توفر هذه المكتبة التوازن الصحيح بين الوظائف وسهولة الاستخدام.