zerolog心得

打印堆栈信息

  1. 必须设置zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
  2. 返回error时必须使用这个包 github.com/pkg/errors
  3. 采用Err方法 zerolog.Error().Err(err)
  4. 使用zerolog.Trace().Stack()
package main

import (
    "bytes"
    "fmt"
    "github.com/pkg/errors"
    "github.com/rs/zerolog"
    "github.com/rs/zerolog/pkgerrors"
)

func main() {
    zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack

    out := &bytes.Buffer{}
    log := zerolog.New(out)

    err := errors.Wrap(errors.New("error message"), "from error")
    log.Trace().Stack().Err(err).Msg("")
    //log.Trace().Stack().Err(err).Send()
    fmt.Println(out.String())
    // {"level":"trace","stack":[{"func":"main","line":"17","source":"main.go"},{"func"
    //:"main","line":"203","source":"proc.go"},{"func":"goexit","line":"1357","source"
    //:"asm_amd64.s"}],"error":"from error: error message"}
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容