Go Academy · पाठ

लॉग स्तर और विशेषताएँ

लॉग में संदर्भ जोड़ें

पाठ 3, कुल 4 में से13 चरण

लॉग स्तर और विशेषताएँ, CoddyKit पर Go Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह 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))

प्रकारित Attrs क्यों

प्रकारित Attrs संकलन समय पर "तर्कों की विषम संख्या" वाली गलती पकड़ लेते हैं और हैंडलर को प्रतिबिंबन से बचाते हैं। अधिक उपयोग वाले मार्गों में इन्हें प्राथमिकता दें।

विशेषताओं का समूहीकरण

slog.Group संबंधित फ़ील्ड को एक कुंजी के अंतर्गत नेस्ट करता है।

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

साझा संदर्भ के लिए Logger.With

logger.With(...) एक अधीनस्थ लॉगर लौटाता है, जो हर संदेश में वही विशेषताएँ जोड़ता है। यह अनुरोध ID के लिए बहुत उपयोगी है।

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

संदर्भ-जागरूक लॉग-लेखन

*Context वाले रूप (जैसे InfoContext) में context.Context होता है, जिससे हैंडलर ट्रेस ID निकाल सकते हैं।

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 से फ़िल्टर करें
  • प्रकारित Attrs (slog.String, slog.Int) अधिक सुरक्षित और तेज़ होते हैं
  • slog.Group फ़ील्ड को नेस्ट करता है; logger.With संदर्भ साझा करता है
  • LevelVar रनटाइम पर स्तर बदलने की सुविधा देता है
शुरुआत निःशुल्क

एआई शिक्षक के साथ Go सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “लॉग स्तर और विशेषताएँ” पाठ निःशुल्क है?

हाँ — Go Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “लॉग स्तर और विशेषताएँ” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“लॉग स्तर और विशेषताएँ” में मैं क्या सीखूँगा?

लॉग में संदर्भ जोड़ें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Go Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Go Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Go Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“लॉग स्तर और विशेषताएँ” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Go Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Go Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. संरचित लॉग क्यों
  2. slog हैंडलर
  3. लॉग स्तर और विशेषताएँ
  4. कस्टम हैंडलर
← Go Academy पर वापस जाएँ