gpt4 book ai didi

go - 为什么使用自定义 log.Logger 记录到文件会失败?

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

我无法让我的程序从 main() 之外的函数写入日志文件我确实看到了https://stackoverflow.com/a/19966217/4374801这很相似,但没有解决我的确切问题。
以下是我正在做的事情的重要部分:

var (
Info *log.Logger
Error *log.Logger
)

func init() {
// set up log file
fileHandle, err := os.OpenFile("/var/log/checkcert", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
log.Fatal(err)
}
//defer to close when you're done with it
defer fileHandle.Close()

//set output of logs to fileHandle
log.SetOutput(fileHandle)

Info = log.New(fileHandle,
"Log: ",
log.Ldate|log.Ltime|log.Lshortfile)

Error = log.New(fileHandle,
"Error: ",
log.Ldate|log.Ltime|log.Lshortfile)
}

// The function below is called from main()
// The version here is truncated to the pertinent bit
func checkDomain(){
Info.Println("test inside checkDomain")
}

上面创建了日志文件,但没有将测试写入其中。如果我在 init() 中放置一个测试 Println,那就行得通了。

最佳答案

defer 将在函数结束时执行,这意味着您的文件将在 init 函数结束时关闭,甚至在您运行 main 之前。在 main 结束之前你不应该关闭你的文件,所以也许考虑将你的记录器和文件的初始化移动到 main 而不是 init 的开始。

关于go - 为什么使用自定义 log.Logger 记录到文件会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50400451/

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