ایپلیکیشن فائل ریکارڈر

func main() {
    app := iris.Default()
    // فائل کی ریکارڈنگ
    // فائل میں لکھتے ہوئے خود بخود رنگوں کو غیر فعال کریں
    f, _ := os.Create("iris.log")
    app.Logger().SetOutput(f)

    // اگر آپ کو فائل اور کنسول دونوں میں لوگ لکھنا ہو تو مندرجہ ذیل کوڈ استعمال کریں
    // app.Logger().AddOutput(os.Stdout)
    
    app.Get("/ping", func(ctx iris.Context) {
        ctx.WriteString("pong")
    })

   app.Listen(":8080")
}

لاگ آؤٹ کرنے کا رنگ کنٹرول

پہلے سے طے شدہ طور پر، کنسول پر لاگ آؤٹ کو تشخیص شدہ TTY کے مطابق رنگین بنایا جائے گا۔

عام معاملات میں سطح کے عنوانات، متن، رنگ اور انداز کی شخصیات دینے کے لیے۔

golog اور pio کو درآمد کریں:

import (
    "github.com/kataras/golog"
    "github.com/kataras/pio"
    // [...]
)

ایک سطح حاصل کریں جسے customize کیا جا سکے، جیسے DebugLevel:

level := golog.Levels[golog.DebugLevel]

آپ کو مکمل کنٹرول ہے سطح کے متن، عنوان، اور انداز کا۔

// سطح کا نام
// کم کیس نام استعمال ہو گا
// تاکہ سٹرنگ سطح کو صحیح سطح کی قسم میں تبدیل کیا جا سکے
Name string
// AlternativeNames یہ وہ نام ہیں جن سے یہ خاص سطح کا لاگ استعمال کیا جا سکتا ہے
// مثلا: Name = "warn"
// AlternativeNames = []string{"warning"}، یہ ایک اختیاری فیلڈ ہے،
// تو ہم نام کو ایک سادہ سٹرنگ رکھتے ہیں اور یہ نیا فیلڈ بناتے ہیں
Title string
// ColorCode `Title` کے لئے رنگ ہے
// `ColorCode` اور `Style` کو لکھنے والوں کے درمیان متوقع ہے
ColorCode int
// Style `Title` کے لئے ایک یا زیادہ معیاری اختیارات ہیں
Style []pio.RichOption

مثالی کوڈ:

level := golog.Levels[golog.DebugLevel]
level.Name = "debug" // الٹا
level.Title = "[DBUG]" // الٹا
level.ColorCode = pio.Yellow // الٹا

آؤٹ پٹ فارمیٹ تبدیل کریں:

app.Logger().SetFormat("json", "    ")

ایک کسٹم فارمیٹر رجسٹر کریں:

app.Logger().RegisterFormatter(new(myFormatter))

golog.Formatter interface درج ذیل ہے:

// Formatter آگ لاگر کی ورٹر کو لوگ کرنے کے لئے ذمہ دار ہے۔
type Formatter interface {
    // فارمیٹ کا عنوان
    String() string
    // کسی بھی اختیارات کو سیٹ کریں اور ایک کلون اشیاء واپس کریں، عام ہوا تو۔ دیکھیں `Logger.SetFormat`.
    Options(opts ...interface{}) Formatter
    // "لوگ" کو "مقصد" لاگر میں لکھیں
    Format(dest io.Writer, log *Log) bool
}

سطح کے مطابق آؤٹ پٹ اور فارمیٹ تبدیل کریں:

app.Logger().SetLevelOutput("error", os.Stderr)
app.Logger().SetLevelFormat("json")

درخواست لاگنگ

موجودہ سسٹم کی لاگنگ کتابت بشرح زیل ہے۔ جبکہ ایکسیس لاگنگ موجودہ ہٹی تھی سسٹم کی درخواستوں اور جوابات کو لاگ کرنے کے لئے استعمال ہوتی ہے۔

package main

import (
    "os"

    "github.com/kataras/iris/v12"
    "github.com/kataras/iris/v12/middleware/accesslog"
)

// دی گئی مثال اور اسکے تبصرے کو دھیان سے پڑھیں۔
func makeAccessLog() *accesslog.AccessLog {
    // ایک نیا ایکسیس لاگ میڈل ویئر کو آغاز کریں۔
    ac := accesslog.File("./access.log")
    // ٹرین ہٹانے کے لئے یہ لائن ہٹا دیں:
    ac.AddOutput(os.Stdout)

    // ڈیفالٹ تشکیل:
    ac.Delim = '|'
    ac.TimeFormat = "2006-01-02 15:04:05"
    ac.Async = false
    ac.IP = true
    ac.BytesReceivedBody = true
    ac.BytesSentBody = true
    ac.BytesReceived = false
    ac.BytesSent = false
    ac.BodyMinify = true
    ac.RequestBody = true
    ac.ResponseBody = false
    ac.KeepMultiLineError = true
    ac.PanicLog = accesslog.LogHandler
    
    // اگر فارمیٹر نہ لکھا گیا ہو تو ڈیفالٹ لائن فارمیٹر استعمال کریں:
    // Time|Delay|Status|Method|Path|IP|Path Query Parameters|Received Bytes|Sent Bytes|Request|Response|
    //
    // ایک کسٹم فارمیٹر مقرر کریں:
    ac.SetFormatter(&accesslog.JSON{
        Indent:    "  ",
        HumanTime: true,
    })
    // ac.SetFormatter(&accesslog.CSV{})
    // ac.SetFormatter(&accesslog.Template{Text: "{{.Code}}"})
    
    return ac
}

func main() {
    ac := makeAccessLog()
    defer ac.Close() // فائل بند کریں۔

    app := iris.New()
    // میڈل ویئر رجسٹر کریں (HTTP ایررز کو بھی پکڑنے کے لئے UseRouter استعمال کر سکتے ہیں۔).
    app.UseRouter(ac.Handler)
    
    app.Get("/", indexHandler)
    
    app.Listen(":8080")
}

func indexHandler(ctx iris.Context) {
    ctx.WriteString("ٹھیک ہے")
}

مزید مثالیں یہاں دیکھیں: _examples/logging/request-logger.