ফাইবার লগ

আমরা লগ ব্যবহার করে প্রোগ্রামের আচরণ পর্যবেক্ষণ করতে, সমস্যা নির্ধারণ করতে, বা সাথে সাথে কর্মচারী অবাধ্য়তা কনফিগার করতে পারি। একটি সুনির্ধারিত প্রকারের লগ সংজ্ঞানের দক্ষতা বাড়িয়ে তুলতে এবং সমস্যা সম্পর্কে হেল্পফুল হওয়ার জন্য সাহায্য করে।

ফাইবার ডিফল্টভাবে লগ মানস্তানিক আউটপুটে প্রিন্ট করার সহায়ক পদ্ধতি সরবরাহ করে। এটা 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("৪২ জীবন, বিশ্ব এবং সবকিছুর উত্তর")
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

দয়া করে মনোযোগ: এই পদ্ধতি concurrency safe নয়।

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 := log.WithContext(ctx)
commonLogger.Info("info")

লক্ষ্য: এটি ফাইবার ফ্রেমওয়ার্কের জন্য ডিফল্ট লগিং লাইব্রেরি। বিশেষ করে, আপনি অন্যান্য পরিচিত গো ওপেন-সোর্স লগিং লাইব্রেরিগুলি চয়ন করতে পারেন।