gpt4 book ai didi

go - 如何更改 logrus 中的日志输出格式?

转载 作者:IT老高 更新时间:2023-10-28 13:07:13 26 4
gpt4 key购买 nike

我使用 Go logrus,我需要更改输出消息的格式。我尝试了几件事都没有成功。

我需要的是使用 logrus 格式化程序这样的格式

[错误]:日期时间 - 消息

我试过没有成功的是这个

     logger := &logrus.Logger{
Out: os.Stderr,
Level: level,
Formatter: &logrus.TextFormatter{
DisableColors: true,
TimestampFormat : "2006-01-02 15:04:05",
FullTimestamp:true,

},
}

这会产生以下内容

    time="2018-02-25 10:42:20" level=error msg="Starting Process"

我希望它是

    [INFO]:2018-02-25 10:42:20 - Starting Process

最佳答案

标准 logrus-prefixed-formater 用法

要实现这一点,您需要制作自己的 TextFormater 以满足 logrus Formatter 接口(interface)。然后,当您创建自己的格式化程序时,您将其传递给 logrus 结构初始化。其他接近和接近你想要实现的方法是这个格式器https://github.com/x-cray/logrus-prefixed-formatter .您可以基于此格式器创建自己的格式器。

在你的情况下,你需要这样使用

logger := &logrus.Logger{
Out: os.Stderr,
Level: logrus.DebugLevel,
Formatter: &prefixed.TextFormatter{
DisableColors: true,
TimestampFormat : "2006-01-02 15:04:05",
FullTimestamp:true,
ForceFormatting: true,
},
}

logrus-prefixed-formater 的自定义输出

链接到 gist 以使用具有更改格式的 logrus-prefixed-formatter 副本 https://gist.github.com/t-tomalak/146e4269460fc63d6938264bb5aaa1db

如果你最终想使用它,我会保留这个选项,因为在这个版本中你有你想要的确切格式、颜色和标准格式化程序中可用的其他功能


自定义格式化程序

第三个选项是使用我创建的包https://github.com/t-tomalak/logrus-easy-formatter .它提供了简单的选项来根据需要格式化输出,这只是目的。我删除了您可能不会使用的不必要的选项。

package main

import (
"os"

"github.com/sirupsen/logrus"
"github.com/t-tomalak/logrus-easy-formatter"
)

func main() {
logger := &logrus.Logger{
Out: os.Stderr,
Level: logrus.DebugLevel,
Formatter: &easy.Formatter{
TimestampFormat: "2006-01-02 15:04:05",
LogFormat: "[%lvl%]: %time% - %msg%",
},
}

logger.Printf("Log message")
}

此示例代码将产生:

[INFO]: 2018-02-27 19:16:55 - Log message

我还想指出,如果将来想更改格式化程序,使用默认 Logrus 应该没有任何问题 TextFormatter/JSONFormatter


logrus-prefixed-formater 的自定义输出

如果您真的不想将此格式化程序复制到您的项目中,您可以使用我的 fork logrus-prefixed-formater 复制/粘贴此代码 https://github.com/t-tomalak/logrus-prefixed-formatter

您可以像标准选项一样使用它,但请记住在您的文件中将导入更改为我的存储库

logger := &logrus.Logger{
Out: os.Stderr,
Level: logrus.DebugLevel,
Formatter: &prefixed.TextFormatter{
DisableColors: true,
TimestampFormat : "2006-01-02 15:04:05",
FullTimestamp:true,
ForceFormatting: true,
},
}

关于go - 如何更改 logrus 中的日志输出格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48971780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com