下面是我使用Labstack的Echo在Go中编写的Web应用程序的入口点:
package main
import (
"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
应用程序中示例化的日志中间件?我已经尝试过:
组件控制器
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)
}
型
即使上面的代码编译成功,
context.Echo().Logger().Debug("Created user", id)
型
不产生任何输出.而下面的语句产生:
context.Echo().Logger().Info("Created user", id)
型
我错过什么了吗?
4条答案
按热度按时间idv4meu81#
我刚开始使用Echo,不知道自发布以来是否有任何变化,但我发现您可以直接导入labstack的logger:
字符串
然后使用它:
型
z2acfund2#
默认情况下,echo使用“INFO”日志级别。因此,任何低于“INFO”级别的内容都会显示。
如果你也想看到“DEBUG”,你需要将级别设置为“DEBUG”:
字符串
层次结构:
型
jexiocij3#
您可以使用第三方日志记录中间件,如https://github.com/sirupsen/logrus
第一个月
例如
创建日志条目功能:
字符串
然后:
型
在main()函数中:
型
bis0qfac4#
技术上来说我有两个选择
1)将logger添加到上下文中
字符串
该记录器的实现看起来类似(取决于您将使用的记录器包)
型
2)为自己创建一个API包,即
并将其作为依赖项注入
型
和使用本
型
并通过
型
在v1api包中,您将拥有
型