Logrus库Go也没有格式化

m528fe3b  于 2023-05-27  发布在  Go
关注(0)|答案(1)|浏览(101)

我使用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{}))
}

我是不是漏了什么地方?还是有什么代码需要添加?

hjzp0vay

hjzp0vay1#

如果你想打印日志作为第一张图片与彩色日志水平,你只需要删除块

log.SetFormatter(&log.TextFormatter{
        FullTimestamp:   true,
        DisableColors:   true,
    })

很明显,您使用的是TextFormatter,这不是logrus的默认日志格式
或者,如果您希望按日志级别隔离颜色,请尝试将DisableColors设置为false
如果你觉得我的解决方案有用,请投赞成票

相关问题