我使用logrus库来记录日志,我的期望就像documentation中的日志一样,如下所示:
这是我使用logrus时的日志:
我已经通读了文档,并按照代码做了什么,但它仍然对我的日志没有影响。这是日志的设置:logger.middleware.go
package middleware
import (
_ "fmt"
"net/http"
"time"
"github.com/labstack/echo/v4"
log "github.com/sirupsen/logrus"
)
func MakeLogEntry(echo echo.Context) *log.Entry {
log.SetFormatter(&log.TextFormatter{
FullTimestamp: true,
DisableColors: true,
})
if echo == 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": echo.Request().Method,
"uri": echo.Request().URL.String(),
"ip": echo.Request().RemoteAddr,
},
)
}
func LoggingRequest(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 = map[string]interface{}{
"error": "HTTP Error",
"message": report.Message,
"status code": report.Code,
}
} else {
report = echo.NewHTTPError(http.StatusInternalServerError, err.Error())
}
MakeLogEntry(c).Error(report.Message)
c.JSON(report.Code, report.Message.(map[string]interface{}))
}
我是不是漏了什么地方?还是有什么代码需要添加?
1条答案
按热度按时间hjzp0vay1#
如果你想打印日志作为第一张图片与彩色日志水平,你只需要删除块
很明显,您使用的是
TextFormatter
,这不是logrus的默认日志格式或者,如果您希望按日志级别隔离颜色,请尝试将
DisableColors
设置为false
如果你觉得我的解决方案有用,请投赞成票