首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logrus条目没有缓冲区字段

Logrus条目没有缓冲区字段
EN

Stack Overflow用户
提问于 2019-10-24 00:46:53
回答 1查看 257关注 0票数 0

我需要构建一个logrus自定义格式化程序,Logrus条目似乎没有一个名为Buffer的字段。

我正在使用:

go版本go1.13.1 linux/amd64 https://github.com/sirupsen/logrus v0.10.0 Linux Cent OS 7

代码语言:javascript
复制
package util

import (
    "bytes"
    "encoding/json"
    "strings"

    "github.com/sirupsen/logrus"
)

type LogFormat struct {
    TimestampFormat string
}

func (f *LogFormat) Format(entry *logrus.Entry) ([]byte, error) {
    var b *bytes.Buffer

    if entry.Buffer != nil {
        b = entry.Buffer
    } else {
        b = &bytes.Buffer{}
    }

    b.WriteByte('[')
    b.WriteString(strings.ToUpper(entry.Level.String()))
    b.WriteString("]:")
    b.WriteString(entry.Time.Format(f.TimestampFormat))

    if entry.Message != "" {
        b.WriteString(" - ")
        b.WriteString(entry.Message)
    }

    if len(entry.Data) > 0 {
        b.WriteString(" || ")
    }

    for key, value := range entry.Data {
        b.WriteString(key)

        b.WriteByte('=')
        b.WriteByte('{')

        strValue, _ := json.Marshal(value)
        var genericObject interface{}
        json.Unmarshal(strValue, &genericObject)

        b.WriteString(string(strValue))
        b.WriteString("}, ")
    }

    b.WriteByte('\n')
    return b.Bytes(), nil
}

Main函数

代码语言:javascript
复制
package main

import (
    "encoding/json"
    "os"
    "time"

    "git-devops.totvs.com.br/rodrigo.henrique/logrusPeopleExample/data"
    "git-devops.totvs.com.br/rodrigo.henrique/logrusPeopleExample/util"
    "github.com/sirupsen/logrus"
)

func main() {

    carlos := &data.People{
        Name:     "Carlos",
        Age:      18,
        LastSeen: time.Now(),
    }

    pedro := &data.People{
        Name:     "Pedro",
        Age:      22,
        Email:    "pedro@email.com.br",
        LastSeen: time.Now(),
    }

    json.NewEncoder(os.Stdout).Encode(
        &carlos,
    )

    formatter := util.LogFormat{}
    formatter.TimestampFormat = "2006-01-02 15:04:05"
    logrus.SetFormatter(&formatter)

    logrus.WithFields(logrus.Fields{
        "people": &carlos,
    }).Info("Logging ", carlos.Name)

    logrus.WithFields(logrus.Fields{
        "people": &pedro,
    }).Info("Logging ", pedro.Name)

    logrus.WithFields(logrus.Fields{
        "people1": &pedro,
        "people2": &carlos,
    }).Info("Logging two people")

}

在Format函数的第二行,我得到了一个错误,因为条目没有缓冲区字段。

EN

回答 1

Stack Overflow用户

发布于 2019-10-24 04:16:08

logrusv0.11.0中引入了Buffer。您可以使用v0.10.0之后的任何版本。

但我建议使用最新版本的v1.4.2。他们必须在以后的版本中添加了许多功能并修复了问题。

所以,你应该只使用最新的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58527585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档