gpt4 book ai didi

Golang log.Fatal 更改 fatal error 中的行号

转载 作者:IT王子 更新时间:2023-10-29 01:39:26 26 4
gpt4 key购买 nike

这个程序发出app: 2015/10/24 11:28:15 example.go:22: open some-crazy-non-existent-file: no such file or directory对应于 fatal 函数中的一行而不是在逻辑上生成/处理错误的 main 内部。我有很多重复的错误处理代码,我想将它们包装在一个函数中,但我不想失去提供信息的行号的便利。如何使我的 fatal 函数对将行号与日志消息相关联的任何机制透明,或者更早地生成行号?

如果 golang 有一个预处理器/宏系统,这将是一个很好的应用

package main

import (
"log"
"os"
)

// logger configured to emit app name, line number, timestamps etc.
var mylog = log.New(os.Stderr, "app: ", log.LstdFlags|log.Lshortfile)

// in order to avoid repetitive error handling code like
//
// result, err := someOperation(argument0, argument1)
// if err != nil {
// mylog.Fatal(err)
// }
//
// I defined the following function

func fatal(err error) {
if err != nil {
mylog.Fatal(err)
}
}

func main() {
_, err := os.Open("some-crazy-non-existent-file")
fatal(err)
}

最佳答案

您可以使用 runtime.Caller(1) 获取任何调用致命函数的行号

这是一个关于 Play 的例子

关于Golang log.Fatal 更改 fatal error 中的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33321893/

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