hb-chen/echo-web

问下echo日志中间件配置当前日期的文件

Closed this issue · 1 comments

您好,我是go新手,无意间发现echo框架,非常喜欢,但水平有限希望您能解释以下内容
日志中间件配置的output 如何以当天的日期创建一个文档 配置给output 以下代码 日志并没有写入任何信息
如果方便的话 能否加我一下qq 619735688 谢谢
var fd *os.File
e := echo.New()
e.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
fd, _ = os.OpenFile("这里通过time获取当天日期2017-02-01.log", os.O_APPEND|os.O_CREATE, 0644)
return next(c)
}
})
e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{Output: fd}))
e.GET("/", func(c echo.Context) error {
return c.JSON(http.StatusOK, "asd")
})
e.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
fd.Close()
return next(c)
}
})

先要理解下中间件,e.Use()是在每次请求时进入HandlerFunc
所以e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{Output: fd})),这里的fd是空的,写日志会报错
{"time":"2017-07-15T07:26:03.240731803+08:00","level":"ERROR","prefix":"web","file":"echo.go","line":"260","message":"invalid argument"}

另外在打开文件时要有读写方式
os.OpenFile("这里通过time获取当天日期2017-02-01.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)

对于你想实现的以当天日期创建文件,可能需要你自己封装个Output,来完成根据日期的创建日志文件的需求,以及文件的打开、写入、关闭等操作