ما هو التسجيل (Logging) في Go؟
التسجيل (Logging) هو عملية تسجيل الأحداث التي تحدث في البرنامج أثناء تنفيذه. في Go، يتم دعم التسجيل المدمج من خلال حزمة log من المكتبة القياسية. توفر هذه الحزمة طريقة بسيطة وفعالة لإخراج الرسائل إلى stdout/stderr، وكتابتها في ملفات، والتحكم في تنسيق الإخراج. السجلات (Logs) ضرورية لتصحيح الأخطاء، ومراقبة أداء التطبيقات، وتدقيق الأمان، وتحليل الأخطاء في بيئة الإنتاج (production).
لماذا نحتاج إلى التسجيل؟
- تصحيح الأخطاء (Debugging): اكتشاف وإصلاح الأخطاء بسرعة أثناء التطوير.
- المراقبة (Monitoring): تتبع حالة التطبيق في الوقت الفعلي.
- التدقيق (Auditing): توثيق إجراءات المستخدمين والأحداث النظامية.
- تحليل الأداء (Performance Analysis): تحديد الاختناقات ومشاكل الأداء.
التثبيت
حزمة log مضمنة في المكتبة القياسية لـ Go، لذلك لا يلزم أي تثبيت إضافي. فقط قم باستيرادها في مشروعك:
import "log"للتسجيل المتقدم، توجد مكتبات خارجية شائعة يتم تثبيتها عبر go get:
go get github.com/sirupsen/logrus# أوgo get go.uber.org/zapالوظائف الأساسية للمكتبة القياسية log
log.Print(),log.Printf(),log.Println()— إخراج الرسائل.log.Fatal(),log.Fatalf(),log.Fatalln()— إخراج رسالة وإنهاء البرنامج برمز 1.log.Panic(),log.Panicf(),log.Panicln()— إخراج رسالة واستدعاء panic.
مثال على كود Go
package main
import (\t"log"\t"os")
func main() {\t// إعداد الإخراج إلى ملف\tfile, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)\tif err != nil {\t\tlog.Fatal(err)\t}\tdefer file.Close()
\t// إنشاء مسجل (logger) مع بادئة وأعلام\tlogger := log.New(file, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile)
\t// أمثلة على التسجيل\tlogger.Println("تم تشغيل التطبيق")\tlogger.Printf("المستخدم %s قام بتسجيل الدخول", "admin")
\t// استخدام المسجل القياسي\tlog.Println("هذه رسالة في stdout")}متى تستخدم
- log القياسي: للمشاريع البسيطة، والبرامج النصية، وأدوات سطر الأوامر.
- Logrus: لتطبيقات الإنتاج التي تحتاج إلى مستويات تسجيل (Info, Warn, Error, Debug) وسجلات منظمة بتنسيق JSON.
- Zap: للأنظمة عالية التحميل حيث تكون الأداء حرجًا (أقل تخصيص للذاكرة).
- Zerolog: مسجل سريع آخر يدعم zero allocation.
يعتمد اختيار المكتبة على متطلبات الأداء، وتعقيد المشروع، والحاجة إلى سجلات منظمة.