我使用 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/