التسجيل هو تقنية حفظ السجلات للأغراض المستقبلية في دورة تطوير البرمجيات. يعد التسجيل أمرًا بالغ الأهمية لأن السجلات تساعد في تصحيح الأخطاء والتشخيصات واستكشاف الأخطاء وإصلاحها ومراقبة المشروع.

يمكنك استخدام التسجيل على مستويات مختلفة من تطبيقاتك للأخطاء والتحذيرات وتصحيح الأخطاء والمزيد.

تسجيل الدخول Go

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

ال سجل الحزمة لا توفر وظائف للسجلات المنظمة. توفر حزم التسجيل المنظمة وظائف تبسط وتحسن عملية التسجيل. يعد النظام البيئي Go موطنًا للعديد من هذه الحزم.

1. انطلق من أوبر

انطلق عبارة عن حزمة تسجيل سريعة ومنظّمة ومتساوية أنشأها فريق Uber مفتوح المصدر لكتابة السجلات في Go. اوبر صمم حزمة Zap لتوفير تسجيل أكثر أداءً من الحزم الأخرى في نظام Go ، بما في ذلك سجل حزمة.

هناك نوعان من قطع الأشجار المتميزين في حزمة Zap. ال المسجل تتعامل الوظيفة مع حالات الأداء الحرجة. ال

instagram viewer
سوغاريدجلوجر يوفر مزيدًا من المرونة من خلال واجهة برمجة التطبيقات الخاصة به على غرار printf ، ولكنه يأتي مع مقايضة صغيرة في الأداء. حتى حزمة SugaredLogger الأبطأ تكون أسرع بـ 4-10 مرات من حزم التسجيل المنظمة الأخرى.

قم بتشغيل ما يلي في سطر الأوامر لتثبيت حزمة Zap:

يذهب وجدتك يذهب.uber.org / zap

ستحتاج إلى إصدار حديث من Go لتثبيت واستخدام وظائف حزمة Zap بنجاح.

المسجل ، يخطئ: = انطلق. إنتاج جديد () // مثيل zap logger

إذا يخطئ! لا شيء {
FMT. Println (يخطئ. خطأ())
}

تأجيل المسجل. مزامنة () // يتدفق المخازن المؤقتة ، إن وجدت
السكر: = المسجل. سكر() // مسجّل سكر هنا

السكر. Infow ("فشل إحضار URL"،
// سياق منظم كأزواج من قيم المفاتيح المكتوبة بشكل فضفاض.
"url" ، url ،
"محاولة"، 3,
"التراجع" ، الوقت. ثانيا،
)

السكر. Infof ("فشل إحضار URL:٪ s" ، URL) // باستخدام تنسيق نمط printf

ال المسجل المتغير هو مثيل لـ انطلق المسجل و سكر الطريقة هي مثال مسجل سكر.

ال إنفو أسلوب يكتب إلى الإخراج ، و معلومات هي نسخة التنسيق من إنفو طريقة.

2. حزمة Logrus

لوجروس عبارة عن حزمة تسجيل منظمة لتطبيقات Go. Logrus متوافق مع مسجل المكتبة القياسي ، مع وظائف مماثلة. إذا كان لديك خبرة في استخدام سجل الحزمة ، ستجد مجموعة تعمل مع Logrus.

لا يدعم Logrus تنسيق JSON افتراضيًا. ولكن يمكنك دائمًا استخدام مكتبة JSON مثل المكتبة المدمجة json حزمة مع Logrus ' SetFormatter طريقة.

يدعم Logrus التسجيل على مستويات مختلفة ، وعلى الرغم من أنه ليس بنفس الأداء مثل معظم حزم التسجيل ، إلا أنه غني بالميزات وآمن.

يمكنك استخدام هذا الأمر لتثبيت Logrus في دليل العمل الخاص بك:

يذهب احصل على github.com/sirupsen/logrus

فيما يلي مثال على التسجيل باستخدام حزمة Logrus.

يستورد (
"نظام التشغيل"
سجل "github.com/sirupsen/logrus" // استيراد الاسم المستعار
)

funcرئيسي {
سجل. SetFormatter (& log. JSONFormatter {}) // تعيين المنسق على JSON
سجل. SetOutput (نظام التشغيل. Stdout) // الإخراج إلى الإخراج القياسي
سجل. SetLevel (سجل. WarnLevel) // تعيين مستوى التحذير

سجل. WithFields (سجل. مجالات{
"الاسم": "John Doe" ،
"سن": 40,
}). معلومات ("بيانات John's Bio")
}

يستورد هذا الرمز مكتبة Logrus ويخلق اسمًا مستعارًا لها سجل. في ال رئيسي وظيفة ، فإنه يستدعي SetFormatter طريقة لتعيين منسق للسجلات. يمكنك استخدام ال SetOutput طريقة لتحديد المكان الذي يجب أن تذهب إليه رسائل السجل ؛ في هذه الحالة ، الإخراج القياسي.

ال تعيين مستوى طريقة سجلات التحذيرات في المستوى المحدد أو أعلى.

3. حزمة ZeroLog

ZeroLog هي مكتبة مستوحاة من Zap ، وسريعة ، ومخصصة للتسجيل ، ومصممة للأداء. يستخدم واجهة برمجة تطبيقات تسلسلية فريدة تسمح لـ Zerolog بكتابة JSON وتسجيل الأحداث دون تخصيصات وانعكاسات.

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

هناك تخصيص منخفض ، وتسجيل مستوٍ ، وأخذ عينات ، وخطافات ، وحقول سياقية ، وتسجيل خطأ مع ميزات تتبع مكدس اختيارية في حزمة Zerolog. يمكنك أيضًا دمج Zerolog مع ملف سياق الكلام و http الحزم.

قم بتشغيل هذا الأمر في المحطة الطرفية لمساحة العمل الخاصة بك لتثبيت ملف زيرولوج حزمة.

يذهب get -u [github.com/rs/zerolog/log](http://github.com/rs/zerolog/log)

إليك مثال بسيط على استخدام حزمة Zerolog لإجراء عملية بسيطة.

يستورد (
"github.com/rs/zerolog" // zerolog للتكوينات
"github.com/rs/zerolog/log" // سجل للتسجيل
)

funcرئيسي() {
// يعتبر UNIX Time أسرع وأصغر من معظم الطوابع الزمنية
زيرولوج. TimeFieldFormat = صفري. TimeFormatUnix

سجل. طباعة ("hello world")
}

ال TimeFieldFormat يتم تعيين الخيار على تنسيق وقت Unix ، و مطبعة يقوم الأمر بكتابة وسيطة النص إلى الإخراج القياسي.

4. حزمة Log15

ال السجل 15 الحزمة عبارة عن مجموعة أدوات بسيطة ذات رأي للتسجيل البشري والقابل للقراءة آليًا مع أفضل الممارسات في Go. نماذج Log15 io و http الحزم من مكتبة Go القياسية كبديل لملفات سجل حزمة.

تتضمن ميزات حزمة Log15 ما يلي:

  • واجهة برمجة تطبيقات بسيطة وسهلة الفهم
  • التسجيل المنظم مع أزواج المفتاح والقيمة
  • قطع الأشجار الأطفال مع السياق الخاص
  • معالج لإنشاء تكوينات تسجيل مخصصة عبر واجهة برمجة تطبيقات صغيرة
  • دعم المحطة الملونة
  • دعم مدمج لتسجيل الدخول إلى الملفات والتدفقات وسجلات النظام وسجلات الشبكة
  • تخزين السجلات للإخراج.

يمكنك تثبيت ملفات السجل 15 إلى حزم Go الخاصة بك باستخدام هذا الأمر.

يذهب احصل على github.com/inconshreveable/log15

من السهل البدء في استخدام حزمة Log15. فيما يلي مثال على إنشاء مثيل للمُسجِّل وتسجيل الدخول إلى مستويات المعلومات والخطأ بالحزمة.

يستورد (
سجل "github.com/inconshreveable/log15" // استيراد الاسم المستعار كسجل
)

funcرئيسي() {
serverLog: = سجل. جديد ("المستودع" ، "الجديد مخزن") // إنشاء المسجّل
الخادم المعلومات ("تم التحقق من صحة طبقة المستودع بنجاح") // سجل المعلومات
الخادم خطأ ("فشل التحقق من صحة طبقة المستودع") // سجل الخطأ
}

ال الخادم المتغير هو مثيل المسجل Log15؛ ال جديد تقوم الطريقة بإرجاع مسجل مع وسيطات السياق التي تقدمها.

ال معلومات تقوم الطريقة بإرجاع رسالة معلومات ، بينما يقوم خطأ طريقة إرجاع رسالة خطأ.

اكتب سجلات مفيدة ومفهومة

يمكن أن يكون التسجيل في غاية الأهمية مثل أي جزء آخر من عملية التطوير. قد يبدو الأمر سهلاً للغاية في المراحل الأولية ، لكن التمسك بالممارسات الأساسية قد يعقد العملية. للتعامل مع كل حالة حافة وجانب من جوانب التسجيل ، يجب عليك استخدام حزمة تسجيل لتسهيل الأمور.

استخدم مستويات التسجيل والهيكل والسياق لجعل سجلاتك مفهومة ومناسبة للأغراض المقصودة.