lazygophers/log

مكتبة تسجيل 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 الذين يقدرون كل من الأداء والبساطة. سواء كنت تبني أداة صغيرة أو نظام موزع على نطاق واسع، توفر هذه المكتبة التوازن الصحيح بين الوظائف وسهولة الاستخدام.