Logging 如何在登录到文件时禁用logrus中的字段名
我在golang使用logrus登录到文件。现在,logrus正在使用字段名登录到文件 即Logging 如何在登录到文件时禁用logrus中的字段名,logging,go,Logging,Go,我在golang使用logrus登录到文件。现在,logrus正在使用字段名登录到文件 即 time=“26-03-2017 03:37:58”level=error msg=“非致命错误。不会停止执行” 如何删除字段名以使日志条目成为 ERRO 26-03-2017 03:37:58不致命。一个错误。不会停止执行 就像它在stderr中的行为一样?您需要编写一个自定义的格式化程序,它只发送您想要查看的字段 下面是一个例子: 键入MyJSONFormatter结构{ } log.SetForma
time=“26-03-2017 03:37:58”level=error msg=“非致命错误。不会停止执行”
如何删除字段名以使日志条目成为
ERRO 26-03-2017 03:37:58不致命。一个错误。不会停止执行
就像它在stderr中的行为一样?您需要编写一个自定义的格式化程序,它只发送您想要查看的字段 下面是一个例子:
键入MyJSONFormatter结构{
}
log.SetFormatter(新的(MyJSONFormatter))
func(f*MyJSONFormatter)格式(entry*entry)([]字节,错误){
//注意:这不包括时间、级别和消息,这些信息在
//条目。有关这些字段的信息,请咨询“godoc”,或阅读
//官方伐木工人的来源。
序列化,err:=json.Marshal(entry.Data)
如果错误!=零{
返回nil,fmt.Errorf(“未能将字段封送到JSON,%v”,err)
}
返回append(序列化的,'\n'),nil
}
以下是如何获得您所要求的:
package main
import (
log "github.com/sirupsen/logrus"
"fmt"
)
type PlainFormatter struct {
TimestampFormat string
LevelDesc []string
}
func (f *PlainFormatter) Format(entry *log.Entry) ([]byte, error) {
timestamp := fmt.Sprintf(entry.Time.Format(f.TimestampFormat))
return []byte(fmt.Sprintf("%s %s %s\n", f.LevelDesc[entry.Level], timestamp, entry.Message)), nil
}
func main() {
plainFormatter := new(PlainFormatter)
plainFormatter.TimestampFormat = "2006-01-02 15:04:05"
plainFormatter.LevelDesc = []string{"PANC", "FATL", "ERRO", "WARN", "INFO", "DEBG"}
log.SetFormatter(plainFormatter)
log.Errorln("Not fatal. An error. Won't stop execution")
log.Infoln("Just some info")
}
- 创建PlainFormatter结构(带有时间戳格式和级别字段)
- 创建一个格式化函数/方法(其中您的结构是接收者)
- 将logrus设置为使用自定义格式化程序
ERRO 2017-07-01 18:22:21 Not fatal. An error. Won't stop execution
INFO 2017-07-01 18:22:21 Just some info
在我的书中,您可以看到一个更实用的示例,说明如何在添加装饰功能一章中操作应用程序记录器。感谢您提供这个示例。是否可以将其与
logrus.WithFields
一起使用?我试过了,但没有成功。而且,我不明白如果你不调用“Format”函数,它是如何工作的。我在PLainFormatter
中又添加了一个字段,但它给了我一个错误。如何在日志中再添加一个字段?