gpt4 book ai didi

logging - 戈朗 : How to capture panic and log this error to original log file?

转载 作者:数据小太阳 更新时间:2023-10-29 03:15:05 28 4
gpt4 key购买 nike

我试图捕获 panic 并记录错误:

func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
defer func() {
if err := recover(); err != nil {
glog.Errorf("Recovered from err: %v", err)
}
}()
panic("TISH IS A PANIC")
return &pb.HelloReply{Message: "Hello " + in.Name}, nil
}

但令我惊讶的是,"Recovered from err: " 从未出现在我的日志文件中,相反,它出现在 /var/log/messages 中。

如何在我的原始日志文件中记录该错误?

[更新]

如果没有 panic ,glog.Errorf 将正确记录到它的日志目录;当出现 panic 时,它就是不能:

// this glog will log correctly, unless uncomment the panic below
glog.Errorf("This is a normal log: %v", err)
// panic("TISH IS A PANIC")

也许这是不可能的,因为这就是崩溃的意思?

最佳答案

您需要在延迟函数中调用 glog.Flush()。来自 glog 的文档:

Log output is buffered and written periodically using Flush. Programs should call Flush before exiting to guarantee all log output is written.

https://godoc.org/github.com/golang/glog

关于logging - 戈朗 : How to capture panic and log this error to original log file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38187649/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com