第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用日志中間件

如何使用日志中間件

Go
一只萌萌小番薯 2021-12-20 10:44:13
下面是我使用 Labstack 的 Echo 用 Go 編寫的 Web 應(yīng)用程序的入口點(diǎn):package mainimport (    "github.com/labstack/echo"    mw "github.com/labstack/echo/middleware")func main() {    controller := controllers.NewUserController(getSession())    app := echo.New()    app.Use(mw.Logger())    app.Use(mw.Recover())    app.SetDebug(true)    app.Post("/users", controller.CreateUser)    app.Get("/users", controller.ListUsers)    app.Get("/users/:id", controller.GetUser)    app.Patch("/users/:id", controller.UpdateUser)    app.Delete("/users/:id", controller.DeleteUser)    app.Run(":8000")}如何重用在Echo應(yīng)用程序中實(shí)例化的日志中間件?我試過(guò)這個(gè):包控制器import (    "net/http"    "github.com/labstack/echo"    "gopkg.in/mgo.v2"    "gopkg.in/mgo.v2/bson")type (    UserController struct {        session *mgo.Session    })func NewUserController(s *mgo.Session) *UserController {    return &UserController{s}}func (userController UserController) CreateUser(context *echo.Context) error {    user := &models.User{}    if err := context.Bind(user); err != nil {        context.Echo().Logger().Error("Error creating user")        return err    }    user.Id = bson.NewObjectId()    userController.session.DB("test").C("users").Insert(user)    context.Echo().Logger().Debug("Created user", id)    return context.JSON(http.StatusCreated, user)}即使上面的代碼編譯通過(guò),語(yǔ)句context.Echo().Logger().Debug("Created user", id)不產(chǎn)生任何輸出...而下面的語(yǔ)句呢:context.Echo().Logger().Info("Created user", id)我錯(cuò)過(guò)了什么嗎?
查看完整描述

3 回答

?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊

我剛開(kāi)始使用 Echo,不知道發(fā)布后是否有任何變化,但我發(fā)現(xiàn)您可以導(dǎo)入 labstack 的記錄器:

import "github.com/labstack/gommon/log"

然后使用它:

log.Debug("Created user", id)


查看完整回答
反對(duì) 回復(fù) 2021-12-20
?
慕桂英3389331

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊

默認(rèn)情況下,echo 使用“INFO”日志級(jí)別。所以任何低于“信息”級(jí)別的內(nèi)容都會(huì)顯示出來(lái)。


如果您還想查看“DEBUG”日志,則需要將級(jí)別設(shè)置為“DEBUG”:


import "github.com/labstack/gommon/log"

e.Logger.SetLevel(log.DEBUG)

等級(jí)制度:


DEBUG

INFO

WARN

ERROR

OFF


查看完整回答
反對(duì) 回復(fù) 2021-12-20
?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以使用 3rd 方日志中間件,例如https://github.com/sirupsen/logrus


import log "github.com/sirupsen/logrus"


例子


創(chuàng)建日志條目功能:


func makeLogEntry(c echo.Context) *log.Entry {

    if c == nil {

        return log.WithFields(log.Fields{

            "at": time.Now().Format("2006-01-02 15:04:05"),

        })

    }


    return log.WithFields(log.Fields{

        "at":     time.Now().Format("2006-01-02 15:04:05"),

        "method": c.Request().Method,

        "uri":    c.Request().URL.String(),

        "ip":     c.Request().RemoteAddr,

    })

}

然后:


func middlewareLogging(next echo.HandlerFunc) echo.HandlerFunc {

    return func(c echo.Context) error {

        makeLogEntry(c).Info("incoming request")

        return next(c)

    }

}


func errorHandler(err error, c echo.Context) {

    report, ok := err.(*echo.HTTPError)

    if ok {

        report.Message = fmt.Sprintf("http error %d - %v", report.Code, report.Message)

    } else {

        report = echo.NewHTTPError(http.StatusInternalServerError, err.Error())

    }


    makeLogEntry(c).Error(report.Message)

    c.HTML(report.Code, report.Message.(string))

}

然后在 main() 函數(shù)中:


func main() {

    e := echo.New()


    e.Use(middlewareLogging)

    e.HTTPErrorHandler = errorHandler


    e.GET("/index", func(c echo.Context) error {

        return c.JSON(http.StatusOK, true)

    })


    lock := make(chan error)

    go func(lock chan error) {

        lock <- e.Start(":9000")

    }(lock)


    time.Sleep(1 * time.Millisecond)

    makeLogEntry(nil).Warning("application started without ssl/tls enabled")


    err := <-lock

    if err != nil {

        makeLogEntry(nil).Panic("failed to start application")

    }

}


查看完整回答
反對(duì) 回復(fù) 2021-12-20
  • 3 回答
  • 0 關(guān)注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)