我希望能够只有panic(err)个,并且在我的日志(log)聚合的slog格式中有死机输出.

我需要的是将死机的完整输出和堆栈跟踪嵌套在我的Logsmsg字段中.

有没有可能在没有大量定制处理的情况下做到这一点?

推荐答案

您可以通过将默认记录器设置为slog记录器,以一种简单的方式记录死机.缺点是,以这种方式记录的所有内容都将记录在INFO级别,而堆栈跟踪将不包括在内.

    slogger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
    slog.SetDefault(slogger)

    slogger.Info("just some info")
    log.Panic("unrecoverable error")

将输出:

{"time":"2009-11-10T23:00:00Z","level":"INFO","msg":"just some info"}
{"time":"2009-11-10T23:00:00Z","level":"INFO","msg":"unrecoverable error"}
panic: unrecoverable error
...
<panic output>
...

Go相关问答推荐

如何使用工作区方法扩展克隆的Golang库

Wamtime Memory中的‘Offset’是什么?Read?

在多个 struct 体中重用 Go 中的函数

如何根据地址和大小打印字符串

在VSCode中如何使用特定的文件名提供编译命令

如何将已知类型转换为指向switch 中类型参数的指针?

如何在 Go msgraph-sdk-go 中转发消息并包括抄送和/或密送收件人?

Golang - POST 失败(NoSurf CSRF)

Go 切片容量增长率

Go 的垃圾收集器在使用时删除 ZeroMQ 套接字

在嵌套模板中使用变量,它也被定义为 go 模板中的变量?

使用 go.work 文件在多个测试文件上运行 go test 命令

如何修改go gin的默认端口?我的 8080 端口正在使用中

使用 Golang 在字符串中循环重复数据

如何 Select 前 N 个元素 Gin-Gorm

Go AST:获取所有 struct

使用 delve 在容器中调试 Golang:container_linux.go:380:启动容器进程导致:exec:/dlv:stat /dlv:没有这样的文件或目录

如何获得Ent中数字列的总和

如何发送带有登录数据的 GET 请求并将 cookie 数据保存到 txt 文件?

在 Go 中表达函数的更好方法( struct 方法)