تسجيل السجلات في Go: نظرة عامة على المكتبة القياسية log والبدائل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو التسجيل (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.

يعتمد اختيار المكتبة على متطلبات الأداء، وتعقيد المشروع، والحاجة إلى سجلات منظمة.

توصيات