फाइबर लॉग

हम प्रोग्राम के व्यवहार को देखने, समस्याओं का निदान करने, या संबंधित चेतावनियाँ कॉन्फ़िगर करने के लिए लॉग का उपयोग कर सकते हैं। एक अच्छी ढंग से संरचित लॉग का परिभाषित करना खोज प्रदर्शन की कुशलता को सुधार सकता है और समस्या संभालने को सरल बना सकता है।

फाइबर डिफॉल्ट रूप से मानक आउटपुट में लॉग प्रिंट करने का एक तरीका प्रदान करता है। यह भी कई ग्लोबल फ़ंक्शन प्रदान करता है, जैसे log.Info, log.Errorf, और log.Warnw.

लॉग स्तर

const (
    LevelTrace Level = iota
    LevelDebug
    LevelInfo
    LevelWarn
    LevelError
    LevelFatal
    LevelPanic
)

कस्टम लॉग

फाइबर AllLogger इंटरफ़ेस विभिन्न लॉगिंग लाइब्रेरी में अनुकूलित करने के लिए प्रदान करता है।

type CommonLogger interface {
    Logger
    FormatLogger
    WithLogger
}

type AllLogger interface {
    CommonLogger
    ControlLogger
    WithLogger
}

लॉग प्रिंट करना

नोट: Fatal स्तर पर आवंटित मेथड को कॉल करने से लॉग प्रिंट करने के बाद कार्यक्रम कार्यन पर बाधा डाल दी जाएगी। कृपया सावधानी से इस्तेमाल करें। विभिन्न स्तरों पर सीधे लॉग प्रिंट करने हेतु, इनपुट किया जाएगा messageKey में और डिफ़ॉल्ट रूप से msg पर सेट किया जाएगा।

log.Info("नमस्ते, दुनिया!")
log.Debug("क्या आप ठीक हैं?")
log.Info("42 जीवन, ब्रह्मांड, और सभी के जवाब है")
log.Warn("हम पर हमला हो रहा है!")
log.Error("ह्यूस्टन, हमें समस्या है।")
log.Fatal("इतना डरावनी बात नहीं थी।")
log.Panic("सिस्टम डाउन हो गया है।")

फॉर्मेटिंग और विभिन्न स्तरों पर लॉग्स को प्रिंट करना, सभी मेथड f से समाप्त होते हैं।

log.Debugf("नमस्ते %s", "बच्चा")
log.Infof("%d जीवन, ब्रह्मांड, और सभी के जवाब है", 233)
log.Warnf("हम पर हमला हो रहा है %s!", "मालिक")
log.Errorf("%s, हमें समस्या है।", "मास्टर शीफू")
log.Fatalf("इतना डरावनी बात नहीं थी %s।", "केला")

कुंजियों और मानों के साथ संदेश प्रिंट करना। अगर कुंजी और मान जोड़े नहीं हैं, तो KEYVALS UNPAIRED प्रिंट किया जाएगा।

log.Debugw("", "नमस्ते", "बच्चा")
log.Infow("", "नंबर", 233)
log.Warnw("", "काम", "मालिक")
log.Errorw("", "नाम", "मास्टर शीफू")
log.Fatalw("", "फल", "केला")

ग्लोबल लॉग

यदि आप किसी प्रोजेक्ट में केवल एक सरल लॉग फ़ंक्शन का इस्तेमाल करना चाहते हैं और उसे समय-समय पर वैश्विक रूप से प्रिंट करना चाहते हैं, तो हम एक ग्लोबल लॉग प्रदान करते हैं।

import "github.com/gofiber/fiber/v2/log"

log.Info("सूचना")
log.Warn("चेतावनी")

ऊपर का कोड डिफ़ॉल्ट log.DefaultLogger को मानक आउटपुट के लिए उपयोग करता है। आप contrib फ़ोल्डर में पहले से अनुक्रियाता प्राप्त कर सकते हैं, या अपना अपना प्रदान किया गया Logger उपयुक्त कर सकते हैं और log.SetLogger का उपयोग करके ग्लोबल लॉगर को सेट कर सकते हैं।

import (
    "log"
    fiberlog "github.com/gofiber/fiber/v2/log"
)

var _ log.AllLogger = (*customLogger)(nil)

type customLogger struct {
    stdlog *log.Logger
}

// ...
// कस्टम लॉगर को इंजेक्ट करें
fiberlog.SetLogger(customLogger)

स्तर सेट करें

log.SetLevel उस स्तर को सेट करता है जो इस स्तर से कम हैं और उन्हें आउटपुट नहीं किया जाएगा। डिफ़ॉल्ट लॉग रिकॉर्डर LevelTrace होता है।

कृपया ध्यान दें कि यह विधि समभावनायी सुरक्षित नहीं है।

import "github.com/gofiber/fiber/v2/log"

log.SetLevel(log.LevelInfo)

आउटपुट सेट करें

log.SetOutput लॉगिंग के लिए आउटपुट गंतव्य सेट करता है। डिफ़ॉल्ट रूप से, लॉगर आउटपुट को कंसोल में प्रिंट करता है।

var logger AllLogger = &defaultLogger{
    stdlog: log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile|log.Lmicroseconds),
    depth:  4,
}

आउटपुट गंतव्य को एक फ़ाइल में सेट करें।

// टेस्ट.लॉग फ़ाइल में आउटपुट
f, err := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
    return
}
log.SetOutput(f)

आउटपुट गंतव्य को कंसोल और एक फ़ाइल दोनों में सेट करें।

// टेस्ट.लॉग फ़ाइल में आउटपुट
file, _ := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
iw := io.MultiWriter(os.Stdout, file)
log.SetOutput(iw)

संदर्भ बाँधें

संदर्भ निर्धारित करें, और निम्नलिखित विधि का उपयोग करके एक CommonLogger उदाहरण को निर्दिष्ट संदर्भ से बाँधें।

commonLogger := log.WithContext(ctx)
commonLogger.Info("info")

ध्यान दें: यह फाइबर फ्रेमवर्क के लिए डिफ़ॉल्ट लॉगिंग पुस्तकालय है। बेशक, आपको किसी अन्य प्रसिद्ध Go स्वतंत्र लॉगिंग पुस्तकालय का चयन करना है।