0Pricing
Go Academy · درس

مستويات السجل والسمات

أضف السياق إلى السجلات

مستويات السجل والسمات درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

إضافة السياق إلى السجلات

تخبرك الرسالة المجردة بما حدث؛ أما السمات فتخبرك بالتفاصيل التي تجعل السجلات قابلة لاتخاذ إجراء: أي مستخدم، وأي طلب، وكم استغرق.

المستويات الأربعة

مستويات slog مرتبة من الأقل إلى الأعلى من حيث الخطورة:

  • Debug (-4)
  • Info (0)
  • Warn (4)
  • Error (8)

المستويات أعداد صحيحة، لذا يمكنك تعريف مستويات مخصصة بينها.

التصفية حسب المستوى

اضبط حدًا أدنى للمستوى في HandlerOptions. وتُسقط السجلات التي تقل عنه بكفاءة.

package main

import (
    "log/slog"
    "os"
)

func main() {
    opts := &slog.HandlerOptions{Level: slog.LevelWarn}
    logger := slog.New(slog.NewTextHandler(os.Stdout, opts))
    logger.Info("ignored")
    logger.Warn("shown")
}

السمات محددة النوع

إلى جانب وسائط المفتاح والقيمة غير المقيدة، يوفر slog منشئات محددة النوع تتجنب الأخطاء وتكون أسرع:

  • slog.String("k", v)
  • slog.Int("k", v)
  • slog.Bool("k", v)
  • slog.Duration("k", d)
slog.Info("done", slog.String("phase", "build"), slog.Int("files", 12))

لماذا نستخدم السمات محددة النوع

تكتشف السمات محددة النوع خطأ "odd number of args" أثناء الترجمة، كما تتيح للمعالج تجاوز التأمل. فَضِّل استخدامها في المسارات الساخنة.

تجميع السمات

تضع slog.Group الحقول المرتبطة داخل مفتاح واحد متداخل.

slog.Info("req",
    slog.Group("http",
        slog.String("method", "GET"),
        slog.Int("status", 200),
    ),
)

Logger.With للسياق المشترك

تعيد logger.With(...) مسجّلًا فرعيًا يضيف السمات نفسها إلى كل رسالة. وهذا مثالي لمعرّف الطلب.

reqLog := logger.With("requestID", "abc-123")
reqLog.Info("started")
reqLog.Info("finished")

التسجيل المدرك للسياق

تحمل المتغيرات *Context (مثل InfoContext) قيمة context.Context، مما يتيح للمعالجات استخراج معرّفات التتبع.

slog.InfoContext(ctx, "handling", "path", "/api")

المستويات الديناميكية

استخدم slog.LevelVar لتغيير المستوى أثناء التشغيل (مثل رفعه إلى Debug عند التحقيق في حادثة) من دون إعادة التشغيل.

var lvl slog.LevelVar
lvl.Set(slog.LevelInfo)
h := slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: &lvl})
// later: lvl.Set(slog.LevelDebug)

الأخطاء كسمات

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

slog.Error("save failed", slog.String("err", err.Error()), slog.Int("retry", 2))

قابل للتشغيل: المستويات وWith

يصفّي هذا البرنامج السجلات حسب المستوى، ويستخدم مسجّلًا فرعيًا ذا سياق مشترك.

package main

import (
    "log/slog"
    "os"
)

func main() {
    opts := &slog.HandlerOptions{Level: slog.LevelInfo}
    base := slog.New(slog.NewTextHandler(os.Stdout, opts))
    req := base.With("requestID", "r-7")
    req.Debug("hidden")
    req.Info("processing", slog.Int("items", 3))
}

تحقق سريع

اختبر مدى فهمك للمستويات والسمات.

مراجعة

لقد تعلمت المستويات والسمات:

  • أربعة مستويات مدمجة؛ يمكنك التصفية باستخدام HandlerOptions.Level
  • السمات محددة النوع (slog.String وslog.Int) أكثر أمانًا وأسرع
  • تضع slog.Group الحقول داخل بنية متداخلة، ويشارك logger.With السياق
  • يتيح LevelVar تغيير المستويات أثناء التشغيل

الأسئلة الشائعة

هل درس «مستويات السجل والسمات» مجاني؟

نعم — نص درس «مستويات السجل والسمات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «مستويات السجل والسمات»؟

أضف السياق إلى السجلات تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «مستويات السجل والسمات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. لماذا السجلات المنظّمة
  2. معالجات slog
  3. مستويات السجل والسمات
  4. المعالجات المخصّصة
← العودة إلى Go Academy