"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكن تقليل تكلفة بيانات تسجيل التتبع المعطلة في Go؟

كيف يمكن تقليل تكلفة بيانات تسجيل التتبع المعطلة في Go؟

تم النشر بتاريخ 2024-11-09
تصفح:726

How to Minimize the Cost of Disabled Trace Logging Statements in Go?

تسجيل التتبع منخفض التكلفة في Go للبيانات المعطلة

في Go، يمثل تسجيل التتبع تحديًا فريدًا: تقليل تكلفة بيانات السجل المعطلة في المسارات الحرجة. على عكس C/C، لا يحتوي Go على وحدات ماكرو للمعالج المسبق، مما يجعل من الضروري استكشاف حلول بديلة.

يتضمن أحد الأساليب استخدام واجهات fmt.Stringer وfmt.GoStringer. من خلال تأخير التنسيق حتى تنفيذ السجل، يمكن تجنب استدعاءات الوظائف باهظة الثمن في وسيطات التسجيل:

type LogFormatter interface {
    LogFormat() string
}

// Inside the logger
if i, ok := i.(LogFormatter); ok {
    fmt.Println(i.LogFormat())
}

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

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

type Log bool
func (l Log) Println(args ...interface{}) {
    fmt.Println(args...)
}

var debug Log = false

if debug {
    debug.Println("DEBUGGING")
}

أخيرًا، يمكن استكشاف إنشاء التعليمات البرمجية، على الرغم من أنها غير مناسبة لتكوين وقت التشغيل. من خلال استخدام gofmt -r أو إنشاء ملفات باستخدام نص/قالب، من الممكن إنشاء نسخ منفصلة لتصحيح الأخطاء لسيناريوهات تصحيح أخطاء محددة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3